【发布时间】:2018-10-26 01:23:18
【问题描述】:
我有一个 csv 文件,其中包含以下字符串格式的数组:
date,name,criteria
2018-05-16,John,"[{'age':35},{'birthyear':1983}]"
2018-05-16,Jane,"[{'age':36},{'birthyear':1982}]"
我正在使用 Python 和 pandas 和 numpy 来处理这个
我需要以下列格式将此文件导入 MongoDB 集合:
{
"date":'2018-05-16',
"name":"John",
"criteria" : [
{"age":35},
{"birthyear" : 1983}
]
},
{
"date":'2018-05-16',
"name":"Jane",
"criteria" : [
{"age":36},
{"birthyear" : 1982}
]
}
`
我尝试使用 json formatter ,但插入 Mongodb 后,我得到的数组与 csv 文件中的相同。
我尝试了以下方法:
#Approach 1
import pymongo
from pymongo import MongoClient
import pandas as pd
import numpy as np
import json
from datetime import datetime
df = pd.read_csv("file.csv")
records = json.loads(df.T.to_json()).values()
db.tmp_collection.insert_many(data.to_dict('record'))
#Approach 2
import pymongo
from pymongo import MongoClient
import pandas as pd
import numpy as np
import json
from datetime import datetime
df = pd.read_csv("file.csv")
data_json = json.loads(df.to_json(orient='records'))
db.tmp_collection.insert_many(data_json)
两者都在 Mongodb 集合中给出以下输出:
{
"date" : "2018-05-16",
"name" : "John",
"criteria" : "[{age:35},{birthyear:1983}]"
}
你能推荐一些更好的方法吗? 附言我是 Python 新手。
提前致谢。
【问题讨论】:
-
在 csv 中,“条件”值不是有效的 json,因为没有引用字符串(年龄、出生年份)。你能解决这个问题吗?
标签: python-3.x mongodb pandas numpy