如何将DataFrame转换为分组为键、对应子组列表为值的Dictionary
解法
直接使用pandas的分组聚合接口就能一步完成转换,核心代码如下:
res = df.groupby('Group')['SubGroup'].agg(list).to_dict()
完整可运行示例
import pandas as pd # 构造你提供的示例DataFrame df = pd.DataFrame({ 'Group': ['GroupA', 'GroupA', 'GroupA', 'GroupB', 'GroupB', 'GroupC'], 'SubGroup': ['A1', 'A2', 'A3', 'B1', 'B2', 'C1'] }) # 执行转换 target_dict = df.groupby('Group')['SubGroup'].agg(list).to_dict() print(target_dict)
运行后输出结果和你要求的格式完全一致:{'GroupA': ['A1', 'A2', 'A3'], 'GroupB': ['B1', 'B2'], 'GroupC': ['C1']}
逻辑说明
- 第一步
groupby('Group'):按Group列的值对数据做分组,相同Group值的行会被归为同一组 - 第二步
['SubGroup'].agg(list):提取每个分组的SubGroup列,将同组的所有值聚合为一个列表 - 第三步
to_dict():将分组聚合后的Series对象转换为字典,键为Group的取值,值为对应聚合好的SubGroup列表
你也可以把agg(list)替换为apply(list),两者在这个场景下效果一致,数据量较大时agg的执行效率更高。
内容的提问来源于stack exchange,提问作者Dennis Kwone
相关产品推荐
相关产品推荐

