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

如何修正Pandas按类别统计status为yes的计数结果?

问题分析与解决方法

你的两段代码逻辑都不符合需求,导致结果出错:

  • 第一段用nunique()是统计每个分组里布尔值的不同取值数量:student组里有True和False两种取值,所以返回2;employee组里只有False一种取值,所以返回1,这显然不是你要的「status为yes的数量」。
  • 第二段的any().sum()逻辑完全错误:any()是判断每个分组是否存在至少一个True,之后的sum()是把整个分组结果的布尔值加总,根本不是按组统计yes的数量。

正确写法

直接对布尔值序列分组后求和即可(因为True等价于1,False等价于0,求和结果就是status为yes的数量):

df['status'].eq('yes').groupby(df['category']).sum()

或者用更直观的分组聚合写法:

df.groupby('category')['status'].agg(lambda x: (x == 'yes').sum())

还可以用crosstab生成交叉表后提取yes列:

import pandas as pd
pd.crosstab(df['category'], df['status'])['yes']

以上三种方法都会得到你期望的结果:

category
student     2
employee    0
Name: status, dtype: int64

内容的提问来源于stack exchange,提问作者rainy days.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:05:21