Pandas - 检查 Series 中的所有值是否都为 NaN

90
我有一个数据系列,看起来像这样:
print mydf

id_L1
2       NaN
3       NaN
4       NaN
5       NaN
6       NaN
7       NaN
8       NaN

我想检查所有的值是否为NaN。
我的尝试:
pd.isnull(mydf).all()

输出:

True

这样做是正确的吗?

3
是的,isnull会创建一个布尔系列,all如果全部为True则返回True - EdChum
3个回答

148

是的,那是正确的,但我认为更习惯用语的方式是:

mys.isnull().all()

23

这将检查所有列...

mys.isnull().values.all(axis=0)

1
如果你像我一样在搜索“检查DataFrame中是否所有值都是NaN”的正确方法,那么这就是正确的方法。OP正在寻找Series解决方案Tho :P编辑 我更喜欢生成一个Series作为结果的版本:opp.isna().all() - Federico Dorato
1
我会在末尾加上'[0]'来获取实际的“False”或“True”: mys.isnull().values.all(axis=0)[0] - DISC-O

1
if df['col'].count() > 0:
    then ...

这种方法效果很好,但我认为它可能会非常慢。我犯了一个错误,把它嵌入到一个循环中测试四列——这太残酷了,但我可以清楚地责怪程序员:)
显然,不要像我一样。总是:先测试所有空值的列,用“空”或“非空”结果设置一个变量,然后再进入循环。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接