我有一个 pandas 数据框(df),我想做类似的事情:
newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
我尝试用
np.NaN
、'NaN'
或 'nan'
等替换 NaN,但没有任何结果为 True。没有pd.NaN
。
我可以在评估上述表达式之前使用
df.fillna(np.nan)
,但这感觉很黑客,我想知道它是否会干扰其他依赖于稍后能够识别 pandas 格式 NaN 的 pandas 操作。
我感觉这个问题应该有一个简单的答案,但不知何故它却让我困惑。任何建议表示赞赏。谢谢你。
所有解决方案中最简单的:
filtered_df = df[df['var2'].isnull()]
此过滤器会过滤并为您提供在
NaN
列中仅具有 'var2'
值的行。
这不起作用,因为
NaN
不等于任何东西,包括 NaN
。请使用 pd.isnull(df.var2)
来代替。
df[df['var'].isna()]
其中“var”是列名称