如何判断pandas DataFrame中指定位置的取值是否为NaN?
原因说明
pandas里默认的缺失值是numpy.nan,属于浮点类型,和Python原生的None是完全不同的对象。而且numpy.nan有个特殊的比较规则:它和任何值做==比较的结果都是False,哪怕和它自己比也一样。你可以试下执行print(np.nan == np.nan),输出也是False,所以用== None判断numpy.nan当然返回False。
你之前测试nullV == None返回True,是因为这是Python原生None的比较逻辑,和numpy.nan的规则不通用。
正确判断方式
最稳妥的方式是用pandas内置的pd.isna()(或者别名pd.isnull()),它兼容numpy.nan、Python原生None、pandas专属的pd.NA等所有常见空值类型,不会出现类型适配问题,用法如下:
print(pd.isna(df.loc[39, 'booking']))
如果目标位置是空值就返回True,否则返回False。
也可以用np.isnan()做判断,但这个方法只支持数值类型输入,如果目标列是字符串、日期等非数值类型,调用时会报错,通用性远不如pd.isna(),一般不推荐。
内容的提问来源于stack exchange,提问作者discoMonkey
相关产品推荐
相关产品推荐

