Python 如何在南(熊猫)过滤?
我有一个熊猫数据帧(df),我想做如下事情: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 我觉得这个问题应该有一个简单的答案,但不知怎么的,我还是没有找到。任何建议都
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 NameNaN与它自身进行比较时返回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作为输入