如何将熊猫数据框转换为列表中的值的字典

时间:2020-01-04 15:13:50

标签: python pandas pandas-groupby

我有一个庞大的Pandas数据框,其结构如下所示:

import pandas as pd
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'C', 'C', 'C'], 'col2': [1, 2, 5, 2, 4, 6]})
df
  col1  col2
0    A     1
1    A     2
2    B     5
3    C     2
4    C     4
5    C     6

任务是构建一个字典,将col1中的元素作为键,并将col2中的相应元素作为值。对于上面的示例,输出应为:

A -> [1, 2]
B -> [5]
C -> [2, 4, 6]

尽管我将解决方案写为

from collections import defaultdict
dd = defaultdict(set)

for row in df.itertuples():
    dd[row.col1].append(row.col2)

我想知道是否有人使用内置的熊猫函数知道更多的“ Python原生”解决方案。

2 个答案:

答案 0 :(得分:4)

没有apply,我们通过for循环来实现

{x : y.tolist() for x , y in df.col2.groupby(df.col1)}
{'A': [1, 2], 'B': [5], 'C': [2, 4, 6]}

答案 1 :(得分:3)

GroupBy.applylist一起用于列表中的Series,然后使用Series.to_dict

d = df.groupby('col1')['col2'].apply(list).to_dict()
print (d)
{'A': [1, 2], 'B': [5], 'C': [2, 4, 6]}