我有一個重復 ID 的資料框,如下所示
| ID | of_flag | os_flag |
|---|---|---|
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 2 | 1 | 0 |
| 2 | 0 | 1 |
| 2 | 0 | 0 |
我需要分別基于 of_flag 和 os_flag 列創建更新的列 'of_flag_up' 和 'os_flag_up',它們在每個 ID 組中查找第一次出現的 1 并為其余行填充 1,如下所示
| ID | of_flag | os_flag | of_flag_up | os_flag_up |
|---|---|---|---|---|
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 2 | 1 | 0 | 1 | 0 |
| 2 | 0 | 1 | 1 | 1 |
| 2 | 0 | 0 | 1 | 1 |
對此的任何幫助將不勝感激。謝謝
uj5u.com熱心網友回復:
您可以使用groupby“ID”并找到每個組的累積最大值cummax并將它們分配給新列:
df[['of_flag_up','os_flag_up']] = df.groupby('ID')[['of_flag', 'os_flag']].cummax()
輸出:
ID of_flag os_flag of_flag_up os_flag_up
0 1 0 1 0 1
1 1 1 0 1 1
2 2 1 0 1 0
3 2 0 1 1 1
4 2 0 0 1 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409863.html
標籤:
