如何在Pandas DataFrame中按条件统计特定值的观测数(Python)
按Tag统计Error严格小于10的观测数
你的目标DataFrame如下:
Tag Error 4 10 3 8 2 11 3 7 4 14 3 5 4 6 2 8
你之前的代码Df.groupby('Tag')(['Error']<10).value_counts()存在语法错误,无法正确执行。下面提供几种可行的实现方法:
方法1:先筛选再分组计数
先过滤出Error < 10的行,再按Tag分组统计数量:
result = Df[Df['Error'] < 10].groupby('Tag').size()
执行后输出:
Tag 2 1 3 3 4 1 dtype: int64
方法2:分组后用apply统计
通过apply对每个分组内的Error列计算符合条件的记录数:
result = Df.groupby('Tag')['Error'].apply(lambda x: (x < 10).sum())
该方法会保留所有存在的Tag,如果某个Tag没有符合条件的记录,结果会显示0。
方法3:使用agg自定义统计列
利用agg方法生成带有明确列名的结果DataFrame:
result = Df.groupby('Tag').agg(count_less_10=('Error', lambda x: (x < 10).sum()))
输出结果:
count_less_10 Tag 2 1 3 3 4 1
内容的提问来源于stack exchange,提问作者toms
相关产品推荐
相关产品推荐

