首页 > 代码库 > python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框值判断nan

python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框值判断nan

pandas中DataFrame,Series 都有 isnull()方法,而数据框却没有,用了就会报错:AttributeError: ‘float‘ object has no attribute ‘isnull‘

  怎么判断单个框是否为 np.nan

Python常规的判断,==,和is, 这对None是有效的

None is None
Out[49]: True

None == None
Out[50]: True

 

  而对,np.nan,只能用is

da1pd.ix[6000996,u‘团队‘] == np.nan
Out[41]: False

da1pd.ix[6000996,u‘团队‘] is np.nan

Out[42]: True

np.nan != np.nan
Out[43]: True

 

  np.nan也不是None

None == np.nan
Out[46]: False

None!= np.nan
Out[47]: True

None is np.nan
Out[48]: False

 

这和 is 和==的判断方法不同有关,is 判断是否为同一个对象,比如常量,常量字符串

1 is 1
Out[51]: True

而’== ’ 是值判断,两个变量值是否相等。

u = 156

v = 156

u is v
Out[58]: True

#因为,Python,对变量赋值是用的引用,默认传的是地址,所以,赋的是同一个 对象,也会是 同一个对象

u = 156.0

u is v
Out[60]: False

u == v
Out[61]: True

# 一个赋值整数,一个赋值浮点数时就 不指向一个对象了。 只是值相等而已

 

回到开始,np.nan 应该是没有值的,所以不能值判断,只用对象引用判断,而None有空值,所以也可以值判断。

python 值比较判断,np.nan is np.nan 却 np.nan != np.nan ,pandas 单个数据框值判断nan