如何检查给定值是否为NaN?
e.g。 if (a == np.NaN)
(不起作用)
在你投票之前,请注意:
isnan
方法会抛出数据类型(如string 必须有一种干净的方法来检查给定值是否为NaN?
答案 0 :(得分:8)
Pandas有notnull
,isna
,notna
和https://appleid.apple.com/
这些函数适用于数组或标量。
a = np.array([[1, np.nan],
[None, '2']])
pd.isna(a)
# same as
# pd.isnull(a)
array([[False, True],
[ True, False]])
pd.notnull(a)
# same as
# pd.notna(a)
array([[ True, False],
[False, True]])
DataFrame
(或Series
)方法b = pd.DataFrame(a)
b.isnull()
# same as
# b.isna()
0 1
0 False True
1 True False
b.notna()
# same as
# b.notnull()
0 1
0 True False
1 False True
答案 1 :(得分:8)
您可以使用NaN
!= 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
这可以通过矢量化方式完成:
In[54]:
s==s
Out[54]:
0 True
1 False
2 True
3 True
dtype: bool
但您仍然可以在整个系列中使用isnull
方法:
In[55]:
s.isnull()
Out[55]:
0 False
1 True
2 False
3 False
dtype: bool
<强>更新强>
如@piRSquared所述,如果您比较None==None
,则会返回True
,但pd.isnull
将返回True
,具体取决于您是否要处理None
作为NaN
,您仍然可以使用==
进行比较,或pd.isnull
如果您想将None
视为NaN