如何识别映射pandas._libs.missing.NAType类型的NA缺失值
Pandas NAType缺失值识别解决方案
首先修正你对isna()方法的认知偏差:Pandas 1.0及以上版本的isna()原生支持识别pandas._libs.missing.NAType类型的<NA>值,你给出的预期输出就是该方法的默认执行结果。
你看到的文档中「仅识别None、numpy.NaN」的表述要么是旧版本文档的内容,要么是你漏看了后续更新补充:目前所有稳定版Pandas的isna()都会将以下值判定为缺失:
- None
- numpy.NaN
- pandas.NA(即NAType类型实例)
- 可空整数、可空布尔、可空字符串类型的内置缺失标记
如果你的环境中isna()没有正确识别<NA>,按以下两种情况处理:
情况1:Pandas版本低于1.0
直接升级Pandas到1.0及以上稳定版本即可,升级命令:
pip install --upgrade pandas
如果不能升级版本,可以用自定义判断逻辑实现识别:
import pandas as pd import numpy as np def check_na(val): return np.isnan(val) if isinstance(val, float) else (val is None or isinstance(val, pd._libs.missing.NAType)) # 调用示例 df["entry"].apply(check_na)
情况2:<NA>是字符串文本而非NAType实例
这种情况通常是CSV导入时没有开启对应缺失值识别导致的,先执行以下代码确认类型:
print(type(df.loc[1, 'entry']))
如果输出为str,说明是字符串格式的'<NA>',可以在CSV导入时添加参数指定缺失值标记:
df = pd.read_csv("你的文件路径.csv", na_values=['<NA>'])
导入后<NA>文本会自动转为标准缺失值,就可以被isna()正常识别。
内容的提问来源于stack exchange,提问作者marianoju
相关产品推荐
相关产品推荐

