数据框:
id id_2 salary title allowance name
0420 13.28 100000 director No Tom
0420 13.28 70000 developer Yes Sam
0110 13.12 120000 director No Dave
0110 13.12 75000 developer Yes shaun
Groupby id和id_2,并将其余列转换为带有列标题的dict
我为此写了一个循环,我认为这不是Python的方式,请让我知道如何用Pandas来做。
所需输出:
[{
"id": 420,
"id_2": 13.28,
"attributes":[
{ "salary": 100000,
"title":"director",
"allowance":"No",
"name": "Tom"
},
{ "salary": 70000,
"title": "developer",
"allowance":"Yes",
"name": "Sam"
}
]
},
{
"id": 110,
"id_2": 13.12,
"attributes":[
{ "salary": 120000,
"title":"director",
"allowance":"No",
"name": "Dave"
},
{ "salary": 75000,
"title": "developer",
"allowance":"Yes",
"name": "shaun"
}
]
}
]
2条答案
按热度按时间lmyy7pcs1#
dicts
的list
。.groupby
选择组g
是表示用于groupby的值的tuple
d
是groupby值g
的 Dataframe.iterrows
遍历每个组的行_
表示的index
,因为不需要它data
,groupby_list
中的标签将从data
中删除,然后使用.to_dict()
将余数转换为dict
,并将其附加到list
、att_list
att_list
赋值为group['attributes']
dict
、group
附加到dict_list
。dict_list
可以转换回 Dataframe ,如下所示:df = pd.json_normalize(dict_list, 'attributes', meta=groupby_list)
dict_list
:wz3gfoph2#
输出: