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

pandas query筛选后groupby统计出现计数为0的多余分组如何解决

问题原因

返回0计数无效分组的核心原因是CAT1、CAT2字段为pandas的Categorical(分类)类型。该类型会持久保留所有预先定义的类别取值,即使经过query筛选后的数据子集里已经不存在对应类别的记录,groupby默认仍会遍历所有预定义类别做聚合统计,没有对应数据的分组就会返回计数0。

解决方案

以下两种方案都可以直接得到仅含实际存在数据的分组统计结果,优先推荐第一种:

  • 方案1:groupby时添加observed=True参数
    不需要调整原有筛选逻辑,仅修改分组统计代码即可,该参数会强制groupby只统计数据中实际存在的类别组合:
    df1 = pd.DataFrame(df_raw.query('COND1=="A" and COND2!="B"'))
    df2 = df1.groupby(['CAT1', 'CAT2'], observed=True).size()
    
  • 方案2:统计完成后过滤0值
    如果不想调整分组参数,也可以在得到统计结果后,手动筛除计数为0的无效分组:
    df1 = pd.DataFrame(df_raw.query('COND1=="A" and COND2!="B"'))
    df2 = df1.groupby(['CAT1', 'CAT2']).size()
    df2 = df2[df2 != 0]
    

内容的提问来源于stack exchange,提问作者정유립

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:09:15