Python Pandas 查找所有值为 NaN 的行

新手上路,请多包涵

所以我有一个包含 5 列的数据框。我想提取所有列均为 NaN 的索引。我正在使用这段代码:

 nan = pd.isnull(df.all)

但这只是返回 false,因为它在逻辑上说并非数据框中的所有值都为空。有成千上万的条目,所以我宁愿不必遍历并检查每个条目。谢谢!

原文由 Steven Setteducati Jr. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 638
2 个回答

它应该只是:

 df.isnull().all(1)

index 可以像这样访问:

 df.index[df.isnull().all(1)]

示范

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((1, np.nan), (10, 2)))
df

在此处输入图像描述

 idx = df.index[df.isnull().all(1)]
nans = df.ix[idx]
nans

在此处输入图像描述


定时

代码

np.random.seed([3,1415])
df = pd.DataFrame(np.random.choice((1, np.nan), (10000, 5)))

在此处输入图像描述

原文由 piRSquared 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设您的数据框名为 df ,您可以使用布尔索引来检查所有列 ( axis=1 ) 是否为空。然后取结果的索引。

 np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3))
df.iloc[-2:, :] = np.nan
>>> df
          0         1         2
0  1.764052  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3       NaN       NaN       NaN
4       NaN       NaN       NaN

nan = df[df.isnull().all(axis=1)].index

>>> nan
Int64Index([3, 4], dtype='int64')

原文由 Alexander 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题