Att*_*nen 6 python numpy pandas
如何检查给定值是否为NaN?
例如if (a == np.NaN)
(不起作用)
在您投票之前,请注意:
isnan
方法会抛出像string这样的数据类型的错误必须有一个干净的方法来检查给定的值是否为NaN?
大熊猫有isnull
,notnull
,isna
,和notna
这些函数适用于数组或标量.
a = np.array([[1, np.nan],
[None, '2']])
Run Code Online (Sandbox Code Playgroud)
pd.isna(a)
# same as
# pd.isnull(a)
array([[False, True],
[ True, False]])
Run Code Online (Sandbox Code Playgroud)
pd.notnull(a)
# same as
# pd.notna(a)
array([[ True, False],
[False, True]])
Run Code Online (Sandbox Code Playgroud)
DataFrame
(或Series
)方法b = pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)
b.isnull()
# same as
# b.isna()
0 1
0 False True
1 True False
Run Code Online (Sandbox Code Playgroud)
b.notna()
# same as
# b.notnull()
0 1
0 True False
1 False True
Run Code Online (Sandbox Code Playgroud)
您可以使用NaN
!= 的inate属性NaN
所以如果是的话a == a
会回来的False
a
NaN
这甚至可以用于字符串
例:
In[52]:
s = pd.Series([1, np.NaN, '', 1.0])
s
Out[52]:
0 1
1 NaN
2
3 1
dtype: object
for val in s:
print(val==val)
True
False
True
True
Run Code Online (Sandbox Code Playgroud)
这可以以矢量化的方式完成:
In[54]:
s==s
Out[54]:
0 True
1 False
2 True
3 True
dtype: bool
Run Code Online (Sandbox Code Playgroud)
但你仍然可以isnull
在整个系列中使用该方法:
In[55]:
s.isnull()
Out[55]:
0 False
1 True
2 False
3 False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
UPDATE
正如@piRSquared指出,如果你比较None==None
这将返回True
,但pd.isnull
将返回True
所以这取决于你是否要正确对待None
作为NaN
你仍然可以使用==
比较或者pd.isnull
如果你想治疗None
的NaN