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

Pandas筛选Adult数据集Male行返回空DataFrame的原因排查

排查Pandas筛选Male行返回空DataFrame的常见原因

嘿,作为过来人太懂这种新手困惑了!你用df[ df['sex'] == 'Male' ]筛选Adult数据集里的男性行,结果只返回带列名的空DataFrame,大概率是这几个小坑在搞鬼,咱们一步步排查:

  • 前后空格或隐藏空白字符:Adult数据集的原始数据里,sex列的取值可能带了看不见的空格,比如' Male'(前面有空格)或者'Male '(后面有空格),甚至是制表符这类隐藏字符。你可以先打印列的唯一值确认:

    print(df['sex'].unique())
    

    如果输出里看到带空格的版本,先清理掉空格再筛选:

    df['sex'] = df['sex'].str.strip()
    df_male = df[df['sex'] == 'Male']
    
  • 大小写不匹配:说不定数据集里的男性取值是全小写的'male',而你用的是首字母大写的'Male'。同样用df['sex'].unique()就能一眼看出来。解决办法要么改成匹配的大小写:

    df_male = df[df['sex'] == 'male']
    

    要么用不区分大小写的筛选(更稳妥):

    df_male = df[df['sex'].str.lower() == 'male']
    
  • 列名拼写错误:别笑,新手很容易犯这个!你写的是'sex',但说不定数据集里的列名是'Sex'(首字母大写)或者'gender'?先确认所有列名:

    print(df.columns)
    

    要是列名不对,改成正确的就行。

  • 数据类型不匹配:比如sex列是分类(category)类型,但分类里的取值和你写的'Male'不一致?先查看列类型:

    print(df['sex'].dtype)
    

    如果是category,再看所有类别:

    print(df['sex'].cat.categories)
    

    要是类别里没有'Male',那肯定筛不到数据。

最后给个小技巧:先看一下sex列的取值分布,能快速判断有没有你要的'Male':

print(df['sex'].value_counts())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:23