首页 > 解决方案 > 转换 Pandas DF 分组,然后创建字典列表

问题描述

我有这个熊猫数据框

group_id        person_nid  email
apac-others     1014890     donaldmiller@email.com
amer-others     71560392    jeffreylopez@email.com
apac-others     715603926   jeffreylopez@email.com
emea-admins     3315024     amaliadelarosa@email.com
amer-finance    100103077   michelangelocasarin@email.com
amer-others     1001203872  charlesrice@uemail.com
emea-others     100134585   kevinrivera@email.com

我想把它变成类似的东西:

{
"apac-others": [
    {"person_nid":"1014890", "email":"donaldmiller@email.com"},
    {"person_nid":"715603926", "email":"jeffreylopez@email.com"},
],
"amer-others": [
    {"person_nid":"71560392", "email":"duffaylopez@email.com"},
    {"person_nid":"1001203872", "email":"charlesrice@uemail.com"},
],
"emea-admins": [
    {"person_nid":"3315024", "email":"amaliadelarosa@email.com"}
],
"amer-finance": [
    {"person_nid":"100103077", "email":"michelangelocasarin@email.com"}
]

}

我的意思是按第一个字段分组,然后将其他字段包含在一个字典中。

标签: pythonpandasdataframe

解决方案


这是预期的输出吗?

>>> df.set_index('group_id').T.apply(dict).reset_index().groupby('group_id', sort=False).agg(list).to_dict()[0]
{'apac-others': [{'person_nid': 1014890, 'email': 'donaldmiller@email.com'}, {'person_nid': 715603926, 'email': 'jeffreylopez@email.com'}],
'amer-others': [{'person_nid': 71560392, 'email': 'jeffreylopez@email.com'}, {'person_nid': 1001203872, 'email': 'charlesrice@uemail.com'}],
'emea-admins': [{'person_nid': 3315024, 'email': 'amaliadelarosa@email.com'}],
'amer-finance': [{'person_nid': 100103077, 'email': 'michelangelocasarin@email.com'}],
'emea-others': [{'person_nid': 100134585, 'email': 'kevinrivera@email.com'}]}

推荐阅读