You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于DataFrame多列与Groupby操作创建嵌套字典

pandas按分组生成嵌套字典实现方法

针对给出的样例DataFrame和目标嵌套字典结构,可直接用以下两种方法实现:

  • 方法1:groupby + 字典推导式(可读性高,性能优秀)
    核心逻辑是先按一级键所在的ColA列分组,遍历每个分组时,将分组内的二级键列ColB设为索引、值列ColC转为字典,最终拼接为完整嵌套结构:
# df为你的原始DataFrame变量
result = {}
for group_name, group_data in df.groupby('ColA'):
    result[group_name] = group_data.set_index('ColB')['ColC'].to_dict()

如果偏好更紧凑的写法,可以直接用字典推导式:

result = {g_name: g_data.set_index('ColB')['ColC'].to_dict() for g_name, g_data in df.groupby('ColA')}
  • 方法2:链式调用写法(一行代码实现)
    利用pandas的apply和to_dict链式方法,不需要写显式循环:
result = df.groupby('ColA').apply(lambda x: x.set_index('ColB')['ColC'].to_dict()).to_dict()

两种方法运行提供的样例数据,都会输出完全匹配需求的结果:

{
    'Dog': {'Red': 8, 'Black': 10, 'White': 2, 'Blue': 4},
    'Cat': {'Red': 7, 'Black': 11, 'White': 12, 'Blue': 40}
}

特殊场景处理

如果数据存在同一个ColA+ColB组合对应多条ColC值的情况,可以先对二级键做聚合再转字典,比如对重复键的值求和:

result = {
    g_name: g_data.groupby('ColB')['ColC'].sum().to_dict()
    for g_name, g_data in df.groupby('ColA')
}

把sum()替换成mean()、max()等聚合函数即可实现其他聚合逻辑。

内容的提问来源于stack exchange,提问作者dmd7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:15:19