Python pandas преобразует dataframe в словарь с несколькими значениями - программирование
Подтвердить что ты не робот

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']}
4b9b3361

Ответ 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")}