簡體   English   中英

用NaN替換數據框中的負值,用fillna方法替換NaN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM