Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用PyMongo将NumPy rec.array插入到MongoDB

使用PyMongo将NumPy rec.array插入到MongoDB
EN

Stack Overflow用户
提问于 2015-12-27 17:01:22
回答 1查看 1.2K关注 0票数 1

在另一个问题中,有人试图使用Python内部结构(dictlist) Insert a Pandas Dataframe into mongodb using PyMongo将熊猫DataFrame插入到MongoDB中

我想知道我们是否不能使用PyMongo将NumPy rec.array (numpy.recarray)插入到MongoDB中。

这可能会更有效,因为pandas.DataFrame.to_dict使用for循环,而且处理大量数据需要很长时间

请参阅https://github.com/pydata/pandas/blob/c45dc762655d7109362fecea05584c72351fdc83/pandas/core/frame.py#L854

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [1]: import pandas as pd
In [2]: import pymongo
In [3]: client = pymongo.MongoClient()
In [4]: collection = client['db_name']['collection_name']
In [5]: df = pd.DataFrame([[1,2,3],[4,5,6]], columns=['a', 'b', 'c'])
In [6]: df
Out[6]:
   a  b  c
0  1  2  3
1  4  5  6
In [7]: rec = df.to_records()
In [8]: rec
Out[8]:
rec.array([(0, 1, 2, 3), (1, 4, 5, 6)],
          dtype=[('index', '<i8'), ('a', '<i8'), ('b', '<i8'), ('c', '<i8')])
In [9]: type(rec)
Out[9]: numpy.recarray

但是我在插入时遇到了一些错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [10]: collection.insert(rec)

已引发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ValueError: no field of name _id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [11]: collection.insert_many(rec)

已引发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TypeError: documents must be a non-empty list

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [12]: collection.insert_one(rec)

已引发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TypeError: document must be an instance of dict, bson.son.SON, or other type that inherits from collections.MutableMapping

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-27 17:22:57

Odo可以做到这一点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [1]: import pandas as pd
In [2]: import pymongo
In [3]: client = pymongo.MongoClient()
In [4]: collection = client['db_name']['collection_name']

In [5]: df = pd.DataFrame([[1,2,3],[4,5,6]], columns=['a', 'b', 'c'])
In [6]: rec = df.to_records(index=False)

In [7]: from odo import odo
In [8]: odo(rec, collection)  # migrate recarray into collection
Out[8]: Collection(Database(MongoClient('localhost', 27017), 'db_name'), 'collection_name')

In [9]: list(collection.find())
Out[9]: 
[{'_id': ObjectId('56801e0bfb5d1b19ff9b9dd3'), 'a': 1, 'b': 2, 'c': 3},
 {'_id': ObjectId('56801e0bfb5d1b19ff9b9dd4'), 'a': 4, 'b': 5, 'c': 6}]

然而,它只是通过字典的迭代器(因此在这方面与其他解决方案一样效率低下)。如果你真的想高效地发送二进制数据,那么你应该看看monary

但是for循环不一定是这里的瓶颈。我强烈建议做一些简单的基准测试,以验证在这里转换到Python数据结构是您的应用程序的瓶颈。您可能过早地进行了优化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34482707

复制
相关文章
Swift 中的属性包装器
当处理代表某种状态形式的属性时,通常会在每次修改值时触发某种关联的逻辑。例如,我们可以根据一组规则验证每个新值,可以以某种方式转换分配的值,或者每当值更改时都可以通知一组观察者。
韦弦zhy
2021/04/08
2.7K0
Owl项目
不久的将来是物联网。也就是说,不仅在地理上最大程度地覆盖了全球网络,而且还渗透到了生活的各个领域。包括我们的房屋在内,几乎所有家用电器中都有。这就需要进一步开发带有设备的收发器网络。
云深无际
2020/08/12
1.5K0
Owl项目
bootstrap carousel 轮播
<!doctype html> <html> <head> <meta charset="utf-8"> <title>联想控股</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> <script src="http://code.jquery.com/jquery.js"></script> <script src="js/bootstrap.js"></script> </head> <body> <div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <div class="carousel-inner"> <div class="item active"> <img src="/wp-content/uploads/2014/07/slide1.png" alt="First slide"> <div class="carousel-caption">标题 1</div> </div> <div class="item"> <img src="/wp-content/uploads/2014/07/slide2.png" alt="Second slide"> <div class="carousel-caption">标题 2</div> </div> <div class="item"> <img src="/wp-content/uploads/2014/07/slide3.png" alt="Third slide"> <div class="carousel-caption">标题 3</div> </div> </div> <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div> </body> </html>
用户5760343
2019/07/07
9100
【OWL】:Web Ontology Language
The W3C OWL 2 Web Ontology Language (OWL) is a Semantic Web language designed to represent rich and complex knowledge about things, groups of things, and relations between things. OWL is a computational logic-based language such that knowledge expressed in OWL can be reasoned with by computer programs either to verify the consistency of that knowledge or to make implicit knowledge explicit. OWL documents, known as ontologies, can be published in the World Wide Web and may refer to or be referred from other OWL ontologies. OWL is part of the W3C's Semantic Web technology stack, which includes RDF [RDF Concepts] and SPARQL [SPARQL].
WEBJ2EE
2021/09/24
1.7K1
【OWL】:Web Ontology Language
Java-包装器类
所有的基本类型都有一个与之对应的类,这些类称为包装器类。对象包装器类是不可改变的,即一旦构造类包装器类,就不允许更改包装在其中的值。同时,对象包装器类还是final,因此不能定义它们的子类。
用户7886150
2021/02/02
5920
java中的包装类
  通过查看源码或API文档,我们可以知道包装类再java.lang包下,而且所有包装类都是final修饰的,即不能被继承。里面维护的基本数据类型的变量value,也是final修饰的,不能更改,即一旦创建对象,其内容就不能修改。包装类主要分为三种不同类型:数值类型(Byte、Short、Integer、Long、Float和Double)、Character类型、Boolean类型。
别团等shy哥发育
2023/02/25
1K0
java中的包装类
【C++11】 包装器 | bind
function包装器 也被叫做 适配器 C++11中function本质是类模板,也是一个包装器
lovevivi
2023/10/17
2550
【C++11】 包装器 | bind
20款移动开发中很有用的 jQuery 插件
在开发任何移动项目时,要尽可能保持每一种资源尺寸都尽可能的小,以给最终用户提供一个好的体验是非常重要的。在这篇文章中我们已经编制了今年新出炉的 jQuery 移动插件列表,收集了滑块,旋转木马,画廊,
用户1667431
2018/04/18
2.3K0
20款移动开发中很有用的 jQuery 插件
bootstrap源码分析之Carousel
源码文件: Carousel.scss Carousel.js 实现原理: 隐藏所有要显示的元素,然后指定当前要显示的为block,宽、高自适应 源码分析: 1、Html结构:主要分为以四个部分   1.1、容器:最外层div,需要一个data-ride=”carousel”来指定为轮播放插件,并且提供一个Id,方便圆圈指示符的关联   1.2、图片列表部分,用一个外层div包裹所有,然后每个img会被一个div,则class为item的包裹住   1.3、圆圈指示符:用一个ol列表来显示其各图形列表项,
sam dragon
2018/01/17
2K0
bootstrap源码分析之Carousel
优化算法——OWL-QN
一、正则化(Regularization) 1、正则化的作用     在机器学习中,正则化是相对于过拟合出现的一种特征选择的方法。在机器学习算法中使用的Loss项为最小化误差,而最小化误差是为了让我们
felixzhao
2018/03/19
1.6K0
优化算法——OWL-QN
C++11 包装器function
C++提供了多个包装器,它们主要是为了给其他编程接口提供更一致或更合适的接口。C++11提供了多个包装器,这里我们重点了解一下包装器function。
艰默
2023/02/26
6780
C++11 包装器function
优化算法——OWL-QN
    在机器学习中,正则化是相对于过拟合出现的一种特征选择的方法。在机器学习算法中使用的Loss项为最小化误差,而最小化误差是为了让我们的模型拟合我们的训练数据,此时,若参数过分拟合我们的训练数据就会形成过拟合的问题,而规则化参数的目的就是为看防止我们的模型过分拟合我们的训练数据。此时,我们会在Loss项之后加上正则项以约束模型中的参数:
felixzhao
2019/02/13
1.1K0
排名Top6的轮播组件,让你眼前一亮的选择!
上周公司的一个项目中有用到了轮播的功能。于是收集和总结了一些常用的轮播/走马灯组件库。这里分享给大家。
程序员老鱼
2023/08/10
1.8K0
排名Top6的轮播组件,让你眼前一亮的选择!
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
获取包装异常中真实异常
没有弄清对方的底细,绝不能掏出你的心来——巴尔扎克 重复调用getCause即可 package io.github.vampireachao.stream.core.lambda; /** * LambdaInvokeException * * @author VampireAchao ZVerify * @since 2022/9/4 */ public class LambdaInvokeException extends RuntimeException { /**
阿超
2022/10/31
6440
New UWP Community Toolkit - Carousel
概述 New UWP Community Toolkit  V2.2.0 的版本发布日志中提到了 Carousel 的调整,本篇我们结合代码详细讲解  Carousel 的实现。 Carousel 是一种传送带形态的控件,在图片展示类的应用中有非常多的应用,它拥有很好的流畅度,可以做很多的自定义,并集成了鼠标,触摸板,键盘等的操作。我们来看一下官方的介绍和官网示例中的展示: The Carousel control provides a new control, inherited from the It
Shao Meng
2018/04/28
1.4K0
New UWP Community Toolkit - Carousel
解构 Solidity 合约 #3:函数包装器
号外,今天我们的登链社区网站做了一点小更新, 作者们可以关联自己的社交账号,关联后,在文章右侧的作者区域就可以看到点亮的小图标,让更多的小伙伴通过内容交朋友,也欢迎大家关注登链社区的账号。
Tiny熊
2023/01/09
6600
解构 Solidity 合约 #3:函数包装器
点击加载更多

相似问题

更改owl-carousel包装类?

18

如何在React owl Carousel中使用Owl carousel选项?

28

如何在Owl carousel中显示多个项目?

291

Owl Carousel返回错误

32

OWL Carousel无函数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文