Конвертируйте Pandas DataFrame с повторяющимися ключами в словарь - PullRequest
0 голосов
/ 24 мая 2018

У меня есть DataFrame с двумя столбцами.Я хочу преобразовать этот DataFrame в словарь Python.Я хочу, чтобы элементы первого столбца были keys, а элементы других столбцов в той же строке были values.Тем не менее, записи в первом столбце повторяются -

Keys    Values
1       1
1       6
1       9
2       3
3       1
3       4

Я хочу dict - {1: [1,6,9], 2: [3], 3: [1,4]}

Я использую код - mydict=df.set_index('Keys').T.to_dict('list'), однако выводтолько уникальные значения ключей.{1: [9], 2: [3], 3: [4]}

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

попробуйте это,

df.groupby('Keys')['Values'].unique().to_dict()

Вывод:

{1: array([1, 6, 9]), 2: array([3]), 3: array([1, 4])}
0 голосов
/ 24 мая 2018

IIUC вы можете groupby в столбце 'Keys', а затем apply list и позвонить to_dict:

In[32]:
df.groupby('Keys')['Values'].apply(list).to_dict()

Out[32]: {1: [1, 6, 9], 2: [3], 3: [1, 4]}

Разбивка вышеперечисленного на этапы:

In[35]:
# groupby on the 'Keys' and apply list to group values into a list
df.groupby('Keys')['Values'].apply(list)
Out[35]: 
Keys
1    [1, 6, 9]
2          [3]
3       [1, 4]
Name: Values, dtype: object

преобразование в диктовку

In[37]:
# make a dict
df.groupby('Keys')['Values'].apply(list).to_dict()
Out[37]: {1: [1, 6, 9], 2: [3], 3: [1, 4]}

Спасибо @ P.Tillman за предположение, что to_frame не нужнослава ему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...