我想替换数据框列中的否定条目。 我将值设置为NaN,然后应用fillna方法。
包含否定条目的数据框的一部分如下所示
print df_sel.P_L_Bef_2.loc[67141:67143]
67141 96745
67142 -20625
67143 96745
Name: P_L_Bef_2, dtype: float64
下一部分是我怀疑错误的地方。虽然我已经阅读了一些关于分配给副本而不是视图的问题,但我认为使用.loc可能会解决这个问题。
df_sel.loc[df_sel.P_L_Bef_2 < 0] = np.nan
print df_sel.P_L_Bef_2.loc[67141:67143]
67141 96745
67142 NaN
67143 96745
Name: P_L_Bef_2, dtype: float64
到目前为止一切顺利。也许!但是......
df_sel['P_L_Bef_2'].fillna(method='ffill')
print df_sel.P_L_Bef_2.loc[67141:67143]
67141 96745
67142 NaN
67143 96745
Name: P_L_Bef_2, dtype: float64
那么,我还在分配一份副本,还是填写方法,而不是我期待的呢?
感谢您的帮助!
答案 0 :(得分:0)
您没有看到差异,因为默认情况下它不会在原地执行此操作,因此您需要分配结果:
df_sel['P_L_Bef_2'] = df_sel['P_L_Bef_2'].fillna(method='ffill')
或设置inplace = True
,fillna
的文档显示了它需要的args和默认的param值。因此设置inplace = True
也应该有效:
df_sel['P_L_Bef_2'].fillna(method='ffill', inplace=True)