如何过滤 NaN (pandas)?

新手上路,请多包涵

我有一个熊猫数据框(df),我想做类似的事情:

 newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]

我尝试将 NaN 替换为 np.NaN'NaN''nan' 等,但没有评估为 True没有 pd.NaN

在评估上述表达式之前,我可以使用 df.fillna(np.nan) 但这感觉很老套,我想知道它是否会干扰其他依赖于稍后能够识别 pandas 格式 NaN 的 pandas 操作。

我觉得这个问题应该有一个简单的答案,但不知何故,我没有想到。任何建议表示赞赏。谢谢你。

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

阅读 798
2 个回答

这不起作用,因为 NaN 不等于任何东西,包括 NaN 。使用 pd.isnull(df.var2) 代替。

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

所有解决方案中最简单的:

 filtered_df = df[df['var2'].isnull()]

这会过滤并为您提供只有 NaN 值在 'var2' 列中的行。

原文由 Gil Baggio 发布,翻译遵循 CC BY-SA 4.0 许可协议

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