如何过滤NaN(熊猫)?

时间:2014-07-31 02:57:27

标签: python pandas nan

我有一个pandas数据帧(df),我想做类似的事情:

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

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

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

我觉得应该对这个问题有一个简单的答案,但不知怎的,它已经躲过了我。任何建议表示赞赏。谢谢。

4 个答案:

答案 0 :(得分:47)

这不起作用,因为NaN不等于任何内容,包括NaN。请改用pd.isnull(df.var2)

答案 1 :(得分:22)

最简单的解决方案:

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

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

答案 2 :(得分:6)

Pandas使用numpy的NaN值。使用numpy.isnan从熊猫系列中获取布尔向量。

答案 3 :(得分:0)

df[df['var'].isna()] 在哪里 df : 数据帧 var : 列名