2017-10-19 164 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()))