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

Pandas groupby后将列值计数展开为新列的简便实现咨询

更简洁的实现方案

核心思路是利用独热编码+分组求和直接得到各取值的统计结果,无需额外引入Counter、字典拆分和多轮DataFrame拼接操作。

核心代码

import pandas as pd
# 原始测试数据
df = pd.DataFrame({'col1':['a','b','a','c','a','b'],'col2':['val1','val2','val2','val1','val2','val2'],'col3':['val3','val4','val3','val4','val3','val4']})

# 核心计算逻辑,可自动适配任意数量的非分组列
final = pd.get_dummies(df, columns=df.columns.drop('col1'), prefix='', prefix_sep='').groupby('col1').sum()

# 若需要和你现有输出完全一致,可将统计结果中的0替换为NaN
final = final.replace(0, pd.NA)

逻辑说明

  • pd.get_dummies会自动将除分组列col1之外的所有列,按取值转换为0/1格式的独立列,prefix=''和prefix_sep=''参数用来保证生成的列名直接是val1/val2这类取值名,不会带上原列名前缀
  • 按col1分组后对所有列求和,直接得到每个分组下各取值的出现次数

该方案比你当前的实现代码量更少,运行效率更高,不需要手动指定要处理的非分组列,适配性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:08