Преобразуйте группировку Pandas DF, а затем создайте список диктовок

#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. Да!! Это ожидаемый результат. Большое вам спасибо!!