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

Pandas groupby保留非分组列问题求助

解决Pandas Groupby后保留多余列的问题

方法1:用size()替代count()

size()直接返回每个分组的总行数,不会生成多余列,返回结果是Series,可通过reset_index()转成DataFrame并重命名计数列:

result = df.groupby(['org_id', 'inspection'], dropna=False).size().reset_index(name='count')

最终结果如下:

org_idinspectioncount
111TRUE2
222FALSE1
333FALSE1
111FALSE1
222TRUE2
333TRUE2

方法2:指定单列执行count()

如果坚持使用count(),可以选择某一列(比如person_id)单独计数,避免生成多余列:

result = df.groupby(['org_id', 'inspection'], dropna=False)['person_id'].count().reset_index(name='count')

方法3:用agg()明确定义聚合逻辑

通过agg()方法可以灵活指定计数列的名称和计算方式:

result = df.groupby(['org_id', 'inspection'], dropna=False).agg(count=('person_id', 'count')).reset_index()

问题根源

你之前使用df.groupby(...).count()时,count()会对所有非分组列分别统计非空值数量,因此保留了person_id和date列。而你需要的是分组后的总行数,size()更贴合需求,指定单列计数也能达到目的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:10:23