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

pandas分类字符串字段groupby分组产生多余组合如何避免

解决方案

你遇到的现象是pandas对分类类型列做分组的默认行为导致的,只需要在groupby方法中添加observed=True参数,即可在分组阶段直接过滤掉数据中不存在的组合,同时保留你设置的Cat列的分类排序规则:

df2 = df.groupby(['col1','Cat','col2'], observed=True)['val'].sum()

原理说明

  • pandas的groupby方法observed参数默认值为False,当分组键包含分类类型字段时,会自动生成所有分类值的笛卡尔积作为分组结果,不管实际数据中是否存在对应组合,这就是你得到27行结果的原因。
  • 将observed设置为True后,分组仅会保留实际数据中存在的组合,最终返回的结果行数和未设置分类时的8行一致,且排序会严格遵循你定义的['tb','tq','ta']分类顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:54:01