从Access数据库导入的空值为何显示为NoneType却不等于None?
Access导入pandas后空值判断问题解答
为什么判断不匹配?
从Access导入空值到pandas时,不会直接存成Python原生的None。即使你用type()看到显示NoneType,实际大概率是numpy或pandas的缺失值对象,和原生None分属不同类型体系,所以用== None判断会返回False。
空单元格实际是什么值?
通常是这两种:
numpy.nan:最常见的情况,尤其是数值型或object型列,虽然有时显示类似None,但本质是numpy的缺失值标识pandas.NA:pandas 1.0+引入的统一缺失值类型,兼容不同数据类型的空值判断
你可以直接打印这个值确认:
print(df.loc['3000', 'email'])
如果输出是nan,那就是numpy.nan;如果是<NA>,就是pandas.NA。
正确的判断方式
别用== None或== np.nan(np.nan和自身比较也会返回False),用专门的缺失值判断函数:
- 通用方案(推荐):用pandas的
pd.isna()或pd.isnull()pd.isna(df.loc['3000', 'email']) - 针对
numpy.nan的方案:用np.isnan()(只适用于数值类型空值)import numpy as np np.isnan(df.loc['3000', 'email'])
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

