Pandas dataframe для указания уникальных значений из столбца в качестве ключей и вложенных списков в качестве значений - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь преобразовать фрейм данных в диктовку, используя уникальные значения из столбца (столбец 3) в качестве ключей.

Из этого:

  Col1   Col2   Col3
0  a       b      x
1  c       d      x
2  e       f      y
3  g       h      y

К этому:

{x:[[a,b][c,d]],y:[[e,f],[g,h]]}

С помощью следующего кода я получаю кортежи, которые на самом деле меня не устраивают.

new_dict = df.groupby('col3').apply(lambda x: list(zip(x['col1'],x['col2']))).to_dict()

output:

{x:[(a,b),(c,d)],y:[(e,f),(g,h)]}

1 Ответ

0 голосов
/ 20 сентября 2018

Используйте map, чтобы составить список или составить список:

new_dict = (df.groupby('col3')
              .apply(lambda x: list(map(list, zip(x['col1'],x['col2']))))
              .to_dict())
print (new_dict)
{'x': [['a', 'b'], ['c', 'd']], 'y': [['e', 'f'], ['g', 'h']]}

new_dict = (df.groupby('col3')
              .apply(lambda x: [list(y) for y in zip(x['col1'],x['col2'])])
              .to_dict())

Другим решением является преобразование каждой группы в двумерный массив и преобразование в list:

new_dict = df.groupby('col3')['col1','col2'].apply(lambda x: x.values.tolist()).to_dict()
...