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

Pandas的groupby对Categorical列使用dropna=False无效怎么办

结论

你遇到的现象是Pandas 1.3.0版本之前的已知缺陷,并非设计决策。

问题说明

在1.2.x及更早版本中,groupby()的dropna=False参数对Categorical类型的分组列存在逻辑缺陷,底层分组逻辑会默认过滤掉分类列中的NA值,即使显式设置dropna=False也无法生效,该问题属于分类列分组一致性缺陷范畴。
observed参数仅用于控制是否返回分类中没有实际数据的空类别,和NA值的展示逻辑无关,因此添加该参数也无法解决问题。

解决方案

  • 优先升级Pandas到1.3.0及以上版本,官方在该版本修复了该缺陷,Categorical列分组时设置dropna=False可以正常返回NA分组。
  • 若必须使用1.2.5版本,可临时将分组列转换为object类型后再执行分组,完成计算后按需转回Categorical类型即可,示例如下:
# 临时转换为object类型分组,保留NA值
res = df.assign(temp_2019=df['2019'].astype(object)) \
        .groupby('temp_2019', dropna=False) \
        .size()
# 如需保持分类索引,可再转换回去
res.index = res.index.astype('category')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03