python - 如何将 Pandas 数据框转换为具有列表中值的字典

标签 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)

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

最佳答案

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

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

关于python - 如何将 Pandas 数据框转换为具有列表中值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59592011/

相关文章:

python - Django REST Framework 多对多创建和更新

python - 如何计算 Pandas 中重叠的日期时间间隔?

python - Pandas 列中值之间的平均天数差异

python - 根据每组的大小拆分数据帧

python - 检查 GROUP BY 和列之间的值

python - 将 pandas 数据框转换为元组字典

python - 使用 loadtxt 读取带有字符串和 float 的文件

python - 在数据框的每一列中查找数据类型

python - 在 Pylint 中,我可以根据文件名覆盖全局消息控制吗?

python - 舍入到最近的 bin