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

基于UCI成人数据集的Pandas带过滤分组计数问题

问题原因与解决方案

原代码错误点

你已经提前通过过滤条件df[df.sex=="Male"]筛选出了所有性别为男性的行,后续分组仅需按education维度聚合即可,额外将sex加入分组键会生成二级索引的结果,不符合仅按教育类型分组统计的需求。

正确实现代码

基础写法(和你原有逻辑兼容)

maleCount = df[df['sex'] == 'Male'].groupby('education')['sex'].count()

如果需要返回DataFrame格式而非Series,可以追加reset_index指定结果列名:

maleCount = df[df['sex'] == 'Male'].groupby('education')['sex'].count().reset_index(name='male_count')

更简便的单行写法

直接用value_counts方法一步完成统计:

maleCount = df[df['sex'] == 'Male']['education'].value_counts()

关于filter方法的说明

filter是分组级别的过滤方法,用于筛选符合条件的分组本身,不会直接做计数统计,确实可以和count组合使用,适用于需要先过滤分组再统计的场景。
举个使用示例:如果需要仅统计「男性人数超过200的教育类型」的对应男性数量,写法如下:

# 先过滤掉组内男性数量<=200的教育分组,再统计剩余分组的男性数
maleCount = df[df['sex'] == 'Male'].groupby('education')\
            .filter(lambda x: len(x) > 200)\
            .groupby('education')['sex'].count()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:15:06