2017-10-19 166 views
1

我使用此代碼來將每一行熊貓DataFrame df轉換爲Json字符串。問題是它正在打印None,但df.head()打印出數據。將熊貓DataFrame的每一行轉換爲一個單獨的Json字符串

import pandas as pd 
import json 

df = pd.read_csv('mydataset.csv') 

for i in df.index: 
    print df.loc[i].to_json("row{}.json".format(i)) 
    if i==10: 
     break 

如何獲取每行作爲Json字符串變量並將其打印出來? Json字符串的結構很簡單,沒有數組,只有字符串,整型和浮點型字段。

+0

@ScottBoston:現在的問題是如何將每一行轉換成JSON字符串,因爲我的代碼不能正常工作。 – Dinosaurius

回答

4

使用apply與參數axis=1過程由行:

df.apply(lambda x: x.to_json("row{}.json".format(x.name)), axis=1) 

如果希望只看到輸出:

df.apply(lambda x: print(x.to_json()), axis=1) 

編輯:

使用自定義功能:

def f(x): 
    a = x.to_json() 
    print (a) 


df.apply(f, axis=1) 
+0

我想轉換for循環中的每一行,因爲'df'很大,也是因爲我需要在for循環中進行一些處理。 – Dinosaurius

+0

如果我在df.iterrows()中做了行: data = row.to_json()',它不起作用。 – Dinosaurius

+0

和我上次編輯中的自定義函數一樣嗎? – jezrael

2

.to_json(fname)函數會直接將數據寫入json文件並且不會返回任何東西給你,所以打印將返回給你沒有,但實際的文件在你的文件系統中。


更新:如果你要保存的JSON字符串作爲Python中的變量,那麼就不要在功能to_json()指定文件名參數。你可以這樣做:a = df.iloc[0].to_json(),字符串將被保存到變量a

+1

那麼,我怎樣才能得到這個Json字符串變量?在這種情況下,我想替換'to_json'。 – Dinosaurius

+1

@Dinosaurius如果你不在'to_json()'函數中指定一個文件名參數,你可以將它作爲一個變量保存在python中。 –

0

感謝這個工作對我來說,有使用這個保存爲JSON最後一欄

df.assign(ln_A = lambda x: x.to_json()))