我有一个pandas数据帧(df),我想做类似的事情:
newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
我尝试用np.NaN
或'NaN'
或'nan'
等替换NaN,但没有任何评估为True。没有pd.NaN
。
我可以在评估上面的表达式之前使用df.fillna(np.nan)
但是感觉很乱,我想知道它是否会干扰其他依赖能够识别熊猫格式NaN的熊猫操作。
我觉得应该对这个问题有一个简单的答案,但不知怎的,它已经躲过了我。任何建议表示赞赏。谢谢。
答案 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 : 列名