将Pandas DataFrame转换为JSON格式

use*_*653 26 json dataframe pandas

我有一个DataFrame带有两列的Pandas - 一个带有文件名,一个带有生成它的小时:

 File       Hour
  F1         1
  F1         2
  F2         1
  F3         1
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为具有以下格式的JSON文件:

{"File":"F1","Hour":"1"} 
{"File":"F1","Hour":"2"}
{"File":"F2","Hour":"1"}
{"File":"F3","Hour":"1"}
Run Code Online (Sandbox Code Playgroud)

当我使用该命令时DataFrame.to_json(orient = "records"),我得到以下格式的记录:

[{"File":"F1","Hour":"1"},
 {"File":"F1","Hour":"2"},
 {"File":"F2","Hour":"1"},
 {"File":"F3","Hour":"1"}]
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有一个选项可以获得所需格式的JSON文件.任何帮助,将不胜感激.

Nic*_*eli 32

你得到的输出DF.to_json是a string.因此,您可以根据需要简单地对其进行切片并从中删除逗号.

out = df.to_json(orient='records')[1:-1].replace('},{', '} {')
Run Code Online (Sandbox Code Playgroud)

要将输出写入文本文件,您可以执行以下操作:

with open('file_name.txt', 'w') as f:
    f.write(out)
Run Code Online (Sandbox Code Playgroud)


Bra*_*mon 18

在较新版本的pandas(0.20.0+,我相信)中,这可以直接完成:

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

也可以直接压缩:

df.to_json('temp.json.gz', orient='records', lines=True, compression='gzip')
Run Code Online (Sandbox Code Playgroud)

  • JEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEZ 我已经被困在这个问题上很久了,它太愚蠢了,你救了我,非常感谢(由于某种原因我无法使用临时 CSV),无论如何,谢谢! (2认同)

小智 14

我认为OP正在寻找的是:

with open('temp.json', 'w') as f:
    f.write(df.to_json(orient='records', lines=True))
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.


cha*_*sno 13

试试这个:

json.dumps(json.loads(df.to_json(orient="records")))
Run Code Online (Sandbox Code Playgroud)


Ami*_*r.S 10

使用以下公式将 pandas DataFrame 转换为字典列表:

import json
json_list = json.loads(json.dumps(list(DataFrame.T.to_dict().values())))
Run Code Online (Sandbox Code Playgroud)