熊猫排到杰森

Rog*_*osh 10 python json pandas

我在pandas中有一个数据帧,我的目标是将数据帧的每一行写为新的json文件.

我现在有点卡住了.我的直觉是迭代数据帧的行(使用df.iterrows)并使用json.dumps转储文件,但无济于事.

有什么想法吗?

tva*_*tar 12

Pandas DataFrames有一个to_json方法,可以为你做到这一点:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html

如果您希望每个行都在自己的文件中,您可以迭代索引(并使用索引来帮助命名它们):

for i in df.index:
    df.loc[i].to_json("row{}.json".format(i))
Run Code Online (Sandbox Code Playgroud)

  • 你是最好的!谢谢你! (2认同)

小智 7

扩展@MrE 的答案,如果您希望将多列从一行转换为另一列,内容为 json 格式(而不是单独的 json 文件作为输出),我在使用时遇到了速度问题:

df['json'] = df.apply(lambda x: x.to_json(), axis=1)
Run Code Online (Sandbox Code Playgroud)

我使用这行代码在 175K 记录和 5 列的数据集上实现了显着的速度改进:

df['json'] = df.to_json(orient='records', lines=True).splitlines()
Run Code Online (Sandbox Code Playgroud)

速度从 >1 分钟变为 350 毫秒。


MrE*_*MrE 6

循环索引非常低效。

更快的技术:

df['json'] = df.apply(lambda x: x.to_json(), axis=1)

  • 我猜到大多数到此为止的人都希望将每一行转换成json,而不必将每一行导出为一个单独的json,但这确实是OP所要的,因此我的回答无疑是错误的。 (2认同)