df.loc NaN 没有改变任何东西

df.loc with NaN is not changing anything

我在这里做错了什么?我正在尝试更改我的数据框,但没有任何反应?

df.loc[(df['var1'] == np.nan) & (df['var2'] == np.nan) & (df['var3'] >=0), 'var2'] = 0

df['var1'] == np.nan 从来都不是真的,因为 np.nan 不等于他自己! .您可以将 np.nan 值检查为 df.var1.isna() 或在单值情况下 value is np.nan。如果 x 是单值 np.nan,并且您尝试: x == np.nan 结果为 False,您应该 x is np.nan.

解决方案

df.iloc[(df[['var1', 'var2']].isna().all(1)) & (df.var3 >= 0), 'var2'] = 0

我猜您想用零填充 nan 值,为此,您可以使用:

df['DataFrame Column'] = df['DataFrame Column'].fillna(0)

df['DataFrame Column'] = df['DataFrame Column'].replace(np.nan, 0)

如果这不是你问的,请评论!!