Python 将数据帧转换为多级嵌套JSON
我有一个需要转换成嵌套json格式的数据帧。我可以完成一个级别的分组,但我不知道如何进行第二个分组以及下面的嵌套 我看了很多不同的例子,但是没有什么能真正让我理解我在下面发布的例子Python 将数据帧转换为多级嵌套JSON,python,json,pandas,dataframe,nested,Python,Json,Pandas,Dataframe,Nested,我有一个需要转换成嵌套json格式的数据帧。我可以完成一个级别的分组,但我不知道如何进行第二个分组以及下面的嵌套 我看了很多不同的例子,但是没有什么能真正让我理解我在下面发布的例子 import pandas as pd data= {'Name': ['TEST01','TEST02'], 'Type': ['Tent','Tent'], 'Address':['123 Happy','456 Happy'], 'City':['Happytown'
import pandas as pd
data= {'Name': ['TEST01','TEST02'],
'Type': ['Tent','Tent'],
'Address':['123 Happy','456 Happy'],
'City':['Happytown','Happytown'],
'State': ['WA','NY'],
'PostalCode': ['89985','85542'],
'Spot' : ['A','A'],
'SpotAssigment' : ['123','456'],
'Cost': [900,500]
}
df = pd.DataFrame(data)
j = (df.groupby(['Name','Type'])
.apply(lambda x: x[['Address','City', 'State', 'PostalCode']].to_dict('r'))
.reset_index(name='addresses')
.to_json(orient='records'))
print(json.dumps(json.loads(j), indent=2, sort_keys=True))
我希望它看起来像下图
[
{
"Name": "TEST01",
"Type": "Tent",
"addresses": [
{
"Address": "123 Happy",
"City": "Happytown",
"PostalCode": "89985",
"State": "WA"
}
],
"spots":[
{"Spot":'A',
"SpotAssignments":[
"SpotAssignment":"123",
"Cost":900
]
}
]
},
{
"Name": "TEST02",
"Type": "Tent",
"addresses": [
{
"Address": "456 Happy",
"City": "Happytown",
"PostalCode": "85542",
"State": "NY"
}
],
"spots":[
{"Spot":'A',
"SpotAssignments":[
"SpotAssignment":"456",
"Cost":500
]
}
]
}
]
试试这个:
j = (df.groupby(['Name','Type'])
.apply(lambda x: x[['Address','City', 'State', 'PostalCode']].to_dict('r'))
.reset_index(name='addresses'))
k = (df.groupby(['Name','Type', 'Spot'])
.apply(lambda x: x[['SpotAssigment', 'Cost']].to_dict('r'))
.reset_index(name='SpotAssignments'))
h = (k.groupby(['Name','Type'])
.apply(lambda x: x[['Spot','SpotAssignments']].to_dict('r'))
.reset_index(name='spots'))
m = j.merge(h, how='inner', on=['Name', 'Type'])
result = m.to_dict(orient='records')
from pprint import pprint as pp
pp(result)
这个
结果
是一个DICT的python列表,其格式与您想要的格式相同,您应该能够直接将其作为JSON转储。这似乎很管用!谢谢你的帮助!