[英]Replace negative values in dataframe by NaN, replace NaN with fillna method
我想替換數據框列中的否定條目。 我將值設置為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
因此,我是否仍在分配副本,或者fillna方法是否超出我的預期?
謝謝你的幫助!
您不會看到任何區別,因為默認情況下它不會執行此操作,因此您需要分配結果:
df_sel['P_L_Bef_2'] = df_sel['P_L_Bef_2'].fillna(method='ffill')
或將inplace = True
設置為fillna
的文檔顯示所需的參數和默認參數值。 所以設置inplace = True
應該起作用:
df_sel['P_L_Bef_2'].fillna(method='ffill', inplace=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.