2013-10-28 38 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}}'