mongodb python导入csv
我正在尝试将csv导入Mongodb,然后从Mongodb执行命令以获取数据 这是我的密码mongodb python导入csv,python,mongodb,Python,Mongodb,我正在尝试将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): d
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\u csv()
将从零开始索引数据帧行和列。然后,to_dict()方法将创建具有数字键的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'}]