我正在嘗試創建一個列,如果同一列中的前一個值滿足條件,則該值必須成為前一個值。例如...
PREVIOUS col | CORRECT col
HW HW
HW HW
RF RF
FW FW
FW FW
FWRF FW
FW FW
如您所見,如果 PREVIOUS col 值為 == 'FW',則 'FWRF' 已更改為 'FW'。我試圖讓 [CORRECT col] 作業,但我遇到了問題。
這是我迄今為止嘗試過的無濟于事...
df['CORRECT col'] = df.loc[df['PREVIOUS col'].shift(-1) == 'FWRF', 'PREVIOUS col']
我還嘗試創建“if”陳述句以使其作業,這甚至更糟......但我仍在學習如何盡可能有效地使用熊貓。對你的幫助表示感謝。
uj5u.com熱心網友回復:
根據您的描述,有兩種可能:
任何一個
- 您只需要檢查以前的值是
FW將當前值也更改為FW,
或者
- 您還需要檢查當前值是否
FWRF與先前值FW一起將當前值更改為FW
對于情況 1,您可以使用.mask()和.shift(),如下所示:
df['CORRECT col'] = df['PREVIOUS col'].mask(df['PREVIOUS col'].shift() == 'FW', 'FW')
在這里,我們獲取PREVIOUS colusing的前一行值.shift()并檢查是否為FW,如果是,則將當前行值也更改為FWusing .mask() (如果條件為 False,則保持原始值)。
結果:
print(df)
PREVIOUS col CORRECT col
0 HW HW
1 HW HW
2 RF RF
3 FW FW
4 FW FW
5 FWRF FW
6 FW FW
對于您還想檢查當前行值 is 的情況 2 FWRF,您可以稍微更改以添加檢查,如下所示:
df['CORRECT col'] = df['PREVIOUS col'].mask((df['PREVIOUS col'] == 'FWRF') & (df['PREVIOUS col'].shift() == 'FW'), 'FW')
在這里,我們添加了條件的檢查(df['PREVIOUS col'] == 'FWRF')和使用&(和),(df['PREVIOUS col'].shift() == 'FW')這樣只有當兩個條件都為真時,我們才更改值。
示例資料的結果相同,但查看您的真實資料是否需要檢查一種條件或兩種條件才能發揮最佳效果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349884.html
上一篇:在R向量中插入以前的日期
下一篇:如何消除熊貓資料框中的閏年
