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

Python如何识别DataFrame中以'?'表示的非NaN缺失值?

识别DataFrame中'?'这类非常规缺失值的方法

Pandas的isnull()方法仅能识别标准缺失值(如NaN、np.nan),像字符串'?'这类自定义缺失标记不会被默认检测到,你可以通过以下几种方式解决:

方法1:读取数据时直接指定缺失标记

如果还未读取数据集,在读取时用na_values参数将'?'定义为缺失值,这样数据读入后会自动把'?'转为np.nan,后续就能用常规的isnull()检测:

import pandas as pd
import numpy as np

# 读取csv时指定'?'为缺失值
df = pd.read_csv('your_dataset.csv', na_values='?')

# 常规统计缺失值
missing_values = df.isnull().sum()
print(missing_values[missing_values > 0])

如果有多个自定义缺失标记(比如'NA'、'N/A'),可以传入列表:

df = pd.read_csv('your_dataset.csv', na_values=['?', 'NA', 'N/A'])

方法2:已读入数据时替换'?'为标准缺失值

如果数据已经加载到DataFrame中,用replace()把'?'替换成np.nan,再进行缺失值统计:

import numpy as np

# 替换所有'?'为np.nan,inplace=True直接修改原DataFrame
df.replace('?', np.nan, inplace=True)

# 统计缺失值
missing_values = df.isnull().sum()
print(missing_values[missing_values > 0])

方法3:直接统计'?'的数量(无需转换)

如果不想修改原数据,也可以直接比较每个单元格是否等于'?',然后统计数量:

# 统计每列中'?'的个数
missing_values = (df == '?').sum()
# 输出有'?'的列及其数量
print(missing_values[missing_values > 0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:57:34