Python pandas преобразует dataframe в словарь с несколькими значениями
У меня есть блок данных с 2 столбцами Адрес и идентификатор. Я хочу объединить идентификаторы с теми же адресами в словаре
import pandas as pd, numpy as np
df = pd.DataFrame({'Address' : ['12 A', '66 C', '10 B', '10 B', '12 A', '12 A'],
'ID' : ['Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff']})
AS=df.set_index('Address')['ID'].to_dict()
print df
Address ID
0 12 A Aa
1 66 C Bb
2 10 B Cc
3 10 B Dd
4 12 A Ee
5 12 A Ff
print AS
{'66 C': 'Bb', '12 A': 'Ff', '10 B': 'Dd'}
Я хочу, чтобы дубликаты сохраняли несколько значений, например:
{'66 C': ['Bb'], '12 A': ['Aa','Ee','Ff'], '10 B': ['Cc','Dd']}
Ответы
Ответ 1
Я думаю, вы можете использовать groupby
и понимание словаря здесь:
>>> df
Address ID
0 12 A Aa
1 66 C Bb
2 10 B Cc
3 10 B Dd
4 12 A Ee
5 12 A Ff
>>> {k: list(v) for k,v in df.groupby("Address")["ID"]}
{'66 C': ['Bb'], '12 A': ['Aa', 'Ee', 'Ff'], '10 B': ['Cc', 'Dd']}
Ответ 2
В ответ на комментарий о нескольких столбцах:
>>> df
Address ID Name
0 12 A Aa Alpha
1 66 C Bb Bravo
2 10 B Cc Charlie
3 10 B Dd Delta
4 12 A Ee Edgar
5 12 A Ff Frank
>>> {k: v.to_dict() for k,v in df.groupby("Address")}