我正在通过以下代码行将数据帧导出到JSON文件:
with open('example.json', 'w') as f:
for row in df3.iterrows():
row[1].to_json(f, orient=None, lines=False)
f.write("\n")
它返回一个像这样的文件:
{"age":20,"city":"Burdinne","email":"enim@risus.org","name":"Zorita","phone":4565434645.0,"postal_code":42680.0,"regDate":"2015-06-14T12:12:00-07:00"}
{"age":22,"city":"Bharatpur","email":"purus.mauris.a@odiosagittis.ca","name":"Mariam","phone":null,"postal_code":null,"regDate":"2016-10-14T18:52:48-07:00"}
{"age":28,"city":"Neerheylissem","email":"Nam@enimEtiam.org","name":"Malik","phone":null,"postal_code":null,"regDate":"2016-09-20T18:06:55-07:00"}
{"age":24,"city":"San Fratello","email":"sapien@Nullamlobortis.ca","name":"Claire","phone":null,"postal_code":null,"regDate":"2016-12-29T09:49:13-08:00"}
{"age":30,"city":"La Cruz","email":"tempor@purusmaurisa.edu","name":"Hilel","phone":null,"postal_code":null,"regDate":"2016-07-09T12:03:31-07:00"}
但是,我希望将这样的JSON文件制成表格:
[
{
"name": "Zorita",
"email": "enim@risus.org",
"regDate": "2015-06-14T12:12:00-07:00",
"city": "Burdinne",
"age": 20,
"postal_code":42680,
"phone": 4565434645
},
{
"name": "Mariam",
"email": "purus.mauris.a@odiosagittis.ca",
"regDate": "2016-10-14T18:52:48-07:00",
"city": "Bharatpur",
"age": 22
},
{
"name": "Malik",
"email": "Nam@enimEtiam.org",
"regDate": "2016-09-20T18:06:55-07:00",
"city": "Neerheylissem",
"age": 28
},
{
"name": "Claire",
"email": "sapien@Nullamlobortis.ca",
"regDate": "2016-12-29T09:49:13-08:00",
"city": "San Fratello",
"age": 24
},
{
"name": "Hilel",
"email": "tempor@purusmaurisa.edu",
"regDate": "2016-07-09T12:03:31-07:00",
"city": "La Cruz",
"age": 30
}
]
我该怎么做? 在我的代码中,我尝试使用“ \\ n” 换行,但显然我没有正确执行
答案 0 :(得分:1)
尝试以下代码:
final_list = list()
for row in df3.iterrows():
final_list.append(row[1].to_dict(orient=None))
with open('example.json', 'w') as f:
f.write(json.dumps(final_list, indent=4))
答案 1 :(得分:1)
您可以通过json.dump
使用参数indent
和必要的sort_keys=True
将列转换为列表并写入文件,以获取漂亮的json:
import json
with open("example.json", "w") as f:
json.dump(df[1].tolist(), f, indent=4, sort_keys=True)
示例:
d = [
{
"name": "Zorita",
"email": "enim@risus.org",
"regDate": "2015-06-14T12:12:00-07:00",
"city": "Burdinne",
"age": 20,
"postal_code":42680,
"phone": 4565434645
},
{
"name": "Mariam",
"email": "purus.mauris.a@odiosagittis.ca",
"regDate": "2016-10-14T18:52:48-07:00",
"city": "Bharatpur",
"age": 22
}
]
df = pd.DataFrame({1: d})
#print (df)
import json
with open("example.json", "w") as f:
json.dump(df[1].tolist(), f, indent=4, sort_keys=True)
[
{
"age": 20,
"city": "Burdinne",
"email": "enim@risus.org",
"name": "Zorita",
"phone": 4565434645,
"postal_code": 42680,
"regDate": "2015-06-14T12:12:00-07:00"
},
{
"age": 22,
"city": "Bharatpur",
"email": "purus.mauris.a@odiosagittis.ca",
"name": "Mariam",
"regDate": "2016-10-14T18:52:48-07:00"
}
]
答案 2 :(得分:0)
尽管@skaul05
已回答了该问题,但使用iterrows
可能效率不高。
这样可能更好
with open('file.json', 'w') as f:
f.write(json.dumps(json.loads(df.to_json()), indent=4))