#python #pandas #dataframe
Вопрос:
У меня есть этот фрейм данных Панды
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"}
]
}
Я имею в виду группировку по первому полю, а затем заключаю другие поля в дикт.
Комментарии:
1. Я надеюсь, что это вымышленные адреса электронной почты, верно? (PII).
Ответ №1:
Это ожидаемый результат?
>>> 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'}]}
Комментарии:
1. Да!! Это ожидаемый результат. Большое вам спасибо!!