【发布时间】:2015-06-06 02:19:32
【问题描述】:
我正在从 Python pandas DataFrame 向本地 MongoDB 中进行相当简单的插入。本质上,我正在调用 datframe.loc[n].to_dict() 并直接从 df 获取我的字典。到目前为止一切都很好,直到我尝试插入,我得到一个“无法编码对象”。直接查看 dict 表明一切看起来都很好,但随后(在写这个问题时)我突然想到检查 dict 中的每种类型,发现一个长 ID 号已转换为 numpy.int64 而不是简单的 int (当我手动创建了 dict,因为 int 可以很好地插入)。
所以,我无法在 pandas 文档中找到任何关于向 to_dict 添加参数的内容,这将允许我覆盖此行为,虽然有解决此问题的蛮力方法,但必须有一些更有说服力的方法来解决这个问题解决这个问题而不诉诸于那种事情。
然后的问题是,如何将数据帧的一行转换为 dict 以插入 MongoDB,确保我只使用可接受的内容类型...或者,我可以在此处进一步备份并使用更简单的方法来获取数据框的每一行都是 Mongo 中的一个文档?
谢谢
根据要求,这是帖子的附录,其中包含我正在使用的数据示例。
{'Account Created': 'about 3 hours ago',
'Followers': 13,
'Following': 499,
'Screen Name': 'XXXXXXXXXX',
'Status': 'Alive',
'Tweets': 12,
'Twitter ID': 0000000000L}
这直接来自插入时出错的 to_dict 输出。我将它直接复制到“测试”字典中,效果很好。如果我打印出每个 dicts 的值,我会得到以下...
to_dict = ['Alive', 'a_aheref77', 'about 3 hours ago', 12, 13, 499, 0000000000L, ObjectId('551bd8cfae89e9370851aa64')]
test = ['Alive', 'XXXXXXXX', 'about 3 hours ago', 499, 13, 12, 0000000000, ObjectId('551bd6fdae89e9370851aa63')]
唯一的区别(据我所知)是 Long int,有趣的是,当我插入 Mongo 时,它在文档中显示该字段为“Number Long”。希望这有助于澄清一些问题。
【问题讨论】:
-
您能否展示导致错误的数据样本?
-
没问题,我已经用数据编辑了问题
标签: python numpy pandas pymongo blaze