![](/img/trans.png)
[英]Python - How to create a JSON nested file from a Pandas dataframe and group by?
[英]How to create Nested json using python pandas dataframe
import pandas as pd
data = [['INDIA', 'UP', 'BANARAS'], ['INDIA', 'UP', 'KANPUR'], ['INDIA', 'TN', 'CHENNAI'], ['US', 'TEXAS', 'HUSTON']]
cols = ['COUNTRY', 'STATE', 'CITY']
df = pd.DataFrame(data=data, columns=cols)
我想要这样的结果...
[
{
"COUNTRY": "INDIA",
"STATE": "TN",
"CITIES": [
{
"CITY": "CHENNAI"
}
]
},
{
"COUNTRY": "INDIA",
"STATE": "UP",
"CITIES": [
{
"CITY": "BANARAS"
},
{
"CITY": "KANPUR"
}
]
},
{
"COUNTRY": "US",
"STATE": "TEXAS",
"CITITES": [
{
"CITY": "HUSTON"
}
]
}
]
你可以试试
out = (df.groupby(['COUNTRY', 'STATE'])
.apply(lambda g: g[['CITY']].to_dict(orient='records'))
.to_frame('CITIES')
.reset_index()
.to_dict(orient='records'))
pprint(out)
[{'CITIES': [{'CITY': 'CHENNAI'}], 'COUNTRY': 'INDIA', 'STATE': 'TN'},
{'CITIES': [{'CITY': 'BANARAS'}, {'CITY': 'KANPUR'}],
'COUNTRY': 'INDIA',
'STATE': 'UP'},
{'CITIES': [{'CITY': 'HUSTON'}], 'COUNTRY': 'US', 'STATE': 'TEXAS'}]
将此添加到上面的代码中:
import json
with open("sample.json", "w") as outfile:
json.dump(out, outfile)
或者您可以删除 to_dict() 并在之后添加此行
out.to_json("filename.json")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.