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

自定义缺失值列表检测pandas DataFrame时False被误判的原因

问题原因

核心原因是 Python 中布尔值(bool)是整数(int)的子类:False 在数值层面等价于 0,True 等价于 1,你可以直接执行 print(False == 0) 验证,返回结果为 True。

当你调用 df.isin(null_values) 做等值匹配时,Sick 列的 False 会被判定为和列表里的 0 匹配,所以该列会被误识别为包含你定义的缺失值。

解决方法

你可以通过分类型做缺失值匹配,避免布尔列和数值0的匹配冲突:

# 拆分不同类型的缺失值规则,排除布尔列的0匹配
str_null_values = ["nan", "missing"]
# 字符串类缺失值匹配
str_null_mask = df.isin(str_null_values)
# 仅对非布尔列做数值0的缺失值匹配
num_null_mask = df.select_dtypes(exclude="bool").eq(0)
# 合并匹配结果
total_null_mask = str_null_mask | num_null_mask
# 输出包含缺失值的列
print(df.columns[total_null_mask.any()])

运行后就不会再误判Sick列为包含缺失值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:04