2013-10-28 37 views
1

我试图从一个熊猫数据框转储数据到一个JSON文件导入到MongoDB中。我需要在文件的格式,对表格的每一行JSON记录:熊猫数据框到具有单独记录的JSON文件

{<column 1>:<value>,<column 2>:<value>,...,<column N>:<value>} 

df.to_json(东方=“记录”)得到接近的结果,但所有的记录都在一个JSON内倾倒阵列。

有关从数据框中获取此结果的有效方法的任何想法?

更新:我已经想出了最好的解决方案是:

dlist = df.to_dict('records') 
dlist = [json.dumps(record)+"\n" for record in dlist] 
open('data.json','w').writelines(dlist) 

回答

0

格式的一个Python字典根据自己的喜好数据,并使用simplejson:

json.dumps(your_dictionary) 
+0

我不认为这将工作,因为我想为每一行单独的JSON记录。记录不应该在结果文件的列表或字典中绑定在一起。 – Chris

+0

我想你的结果是一个python的记录列表? – mrlouhibi

+0

文件中的每一行都应该是代表一个特定记录的字典。这些字典不应该绑定在文件列表中。我在列表中为 – Chris

1

文档here,有几个orient选项,你可以通过,你至少需要熊猫0.12

In [2]: df = DataFrame(np.random.randn(10,2),columns=list('AB')) 

In [3]: df 
Out[3]: 
      A   B 
0 -0.350949 -0.428705 
1 -1.732226 1.895324 
2 0.314642 -1.494372 
3 -0.492676 0.180832 
4 -0.985848 0.070543 
5 -0.689386 -0.213252 
6 0.673370 0.045452 
7 -1.403494 -1.591106 
8 -1.836650 -0.494737 
9 -0.105253 0.243730 

In [4]: df.to_json() 
Out[4]: '{"A":{"0":-0.3509492646,"1":-1.7322255701,"2":0.3146421374,"3":-0.4926764426,"4":-0.9858476787,"5":-0.6893856618,"6":0.673369954,"7":-1.4034942394,"8":-1.8366498622,"9":-0.1052531862},"B":{"0":-0.4287054732,"1":1.8953235554,"2":-1.4943721459,"3":0.1808322313,"4":0.0705432211,"5":-0.213252257,"6":0.045451995,"7":-1.5911060576,"8":-0.4947369551,"9":0.2437304866}}'