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

Pandas DataFrame未被isnull识别的缺失值如何筛选与删除

你遇到的是非标准缺失值的问题,isnull()只会识别pandas约定的缺失值(比如np.nan、None、NaT等),空字符串、全空格字符串、不可见特殊字符这类有效字符串类型的占位缺失值,不会被isnull()判定为缺失,所以统计出来的空值数量为0。

第一步:定位异常值的具体内容

先输出Gender字段的所有唯一值,确认异常的那类取值到底是什么:

print(Patients['Gender'].unique())

大概率你会看到输出里有''(空字符串)、' '(全空格)或者'\t'/'\n'这类不可见的控制字符。

第二步:筛选异常行

可以根据自己的需求选对应的筛选方法:

  • 方法1:筛选所有性别取值不是M也不是F的行(适用范围最广,能覆盖所有异常值)
abnormal_rows = Patients[~Patients['Gender'].isin(['M', 'F'])]
  • 方法2:筛选去除首尾空白后为空的行(覆盖空字符串、全空格、带制表符/换行符的空白类异常)
abnormal_rows = Patients[Patients['Gender'].str.strip() == '']

你可以打印abnormal_rows确认是不是你要找的那25%的异常数据。

第三步:删除异常行

直接过滤掉异常行即可,推荐两种稳妥的写法:

  1. 只保留取值为M/F的行(可以避免其他未知异常值混入)
Patients = Patients[Patients['Gender'].isin(['M', 'F'])].reset_index(drop=True)
  1. 仅过滤掉空白类取值的行
Patients = Patients[Patients['Gender'].str.strip() != ''].reset_index(drop=True)

处理完后可以再执行Patients['Gender'].unique()或者重新画图验证,异常的无名称类别就会被清除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:00:01