我正在做一个相当简单的插入到来自Python熊猫DataFrame的本地MongoDB。基本上我调用datframe.loc [n] .to_dict()并直接从df获取我的字典。到目前为止,所有的都很好,直到我尝试插入,我得到'无法编码对象'。看直接表明,一切看起来不错,但后来(写这个问题时)它使我想检查在字典中的每种类型,并发现一个长的ID号已转换为numpy.int64,而不是一个简单的int(当我手动创建了dict,因为int会插入正确)。插入到MongoDB retuns无法编码对象
因此,我无法在熊猫文档中找到任何关于向to_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输出。我直接将其复制到“测试”字典中,并且工作得很好。如果我打印出每个类型的字典,我得到以下的值...
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类型,其中有趣的是,当我做了蒙戈插入它将该字段显示为文档中的“Number Long”。希望这个帮助澄清索姆。
你可以显示一个数据的例子是导致错误? – 2015-04-01 13:03:44
没问题,我用数据编辑了问题 – Thatch 2015-04-01 13:48:04