[英]mongodb python import csv
我正在尝试将 csv 导入 Mongodb,然后从 Mongodb 执行命令以获取数据。
这是我的代码。
import pandas as pd
from pymongo import MongoClient
client = MongoClient()
db = client.test # client.database_name
collection = db.test #db.collection_name
def csv_to_json(filename, header=None):
data = pd.read_csv(filename, header=header)
return data.to_dict('records')
collection.insert_many(csv_to_json('test.csv'))
但是,我遇到了这个错误。 究竟出了什么问题?
operation, command, docs, check_keys, ack, opts, ctx)
InvalidDocument: documents must have only string keys, key was 0
默认情况下, read_csv()
将read_csv()
索引数据帧的行和列。 然后to_dict()
方法将创建一个具有数字键的字典列表。 MongoDB 中不允许使用数字键; 因此你看到的问题。
因此,假设您的 csv 文件如下所示:
Field1,Field2
a,x
b,y
c,z
那么你需要做的唯一改变是:
collection.insert_many(csv_to_json('test.csv', header=0))
这将告诉 pandas 基于标题行创建一个索引,然后该索引将成为文档中每个字段的键。
pprint.pprint(list(collection.find({}, {'_id': 0})))
给出:
[{'Field1': 'a', 'Field2': 'x'},
{'Field1': 'b', 'Field2': 'y'},
{'Field1': 'c', 'Field2': 'z'}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.