Python 如何在南(熊猫)过滤?

Python 如何在南(熊猫)过滤?,python,pandas,nan,Python,Pandas,Nan,我有一个熊猫数据帧(df),我想做如下事情: newdf = df[(df.var1 == 'a') & (df.var2 == NaN)] 我试过用np.NaN,或'NaN'或'NaN'等替换NaN,但没有结果。没有pd.NaN 在评估上述表达式之前,我可以使用df.fillna(np.nan),但这感觉有点不对劲,我想知道它是否会干扰其他pandas操作,这些操作依赖于以后能够识别pandas格式的nan 我觉得这个问题应该有一个简单的答案,但不知怎么的,我还是没有找到。任何建议都

我有一个熊猫数据帧(df),我想做如下事情:

newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
我试过用
np.NaN
,或
'NaN'
'NaN'
等替换NaN,但没有结果。没有
pd.NaN

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


我觉得这个问题应该有一个简单的答案,但不知怎么的,我还是没有找到。任何建议都将不胜感激。谢谢。

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

熊猫使用
numpy
的NaN值。用于从pandas系列中获取布尔向量。

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

filtered_df = df[df['var2'].isnull()]
这将筛选并提供在
'var2'
列中只有
NaN
值的行。

df[df['var'].isna() 哪里 df:数据帧
var:Column Name

NaN与它自身进行比较时返回false。您是否尝试过
df.var2!=df.var2
?@AndrewJohnson酷!谢谢你的建议和很好的解释。我看到df.var2.isnull()是这个答案的另一个变体。尽管这不包括不想过滤NaN值的情况。类似于df.var2!=Nan对于像我这样有@MultiGoodwerse观察的人,我发现还有
pd.notnull()
。因此,您可以使用
df.loc[pd.isnull(df.var)]
保留
NaN
vals,或者使用
df.loc[pd.notnull(df.var)]
过滤掉它们。您还可以使用一元运算符(
~
)过滤NaN。类似于
df.loc[~pd.isnull(df.var)]
您不能使用numpy.isnan作为输入