我使用此代码将pandas DataFrame df
的每一行转换为Json字符串。问题在于它打印None
,但df.head()
打印出数据。
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 :(得分: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)
答案 1 :(得分:3)
.to_json(fname)
函数会直接将数据写入json文件,并且不会向您返回任何内容,因此print将返回none,但实际文件位于文件系统中。
更新:如果要将json字符串保存为python中的变量,则不要在函数to_json()
中指定filename参数。您可以执行:a = df.iloc[0].to_json()
,字符串将保存到变量a
。
答案 2 :(得分:0)
感谢这对我有用,最后一列保存为JSon:
df.assign(ln_A = lambda x: x.to_json()))
答案 3 :(得分:0)
我对提出的解决方案不满意,最终这样做:
for chunk in (pd.read_csv(file, sep = ",", header = False, index_col = 0, chunksize=chunk_size)):
json_chunk = chunk.to_json(orient = "records", force_ascii = True, default_handler = None)
当我读取数百万行时,我的解决方案将使用大块代码。
答案 4 :(得分:0)
为每个数据帧生成一个json记录:
for i in df.index:
record = df.iloc[i].to_json()
print(record)