早上好。
我正在嘗試根據其他列中存在的值替換多個列值。我可以在 R 中做到這一點,但我不明白如何用 python 做到這一點。我嘗試使用 np.where() 和 df.loc 方法,但它只允許我處理單列。資料是一次熱編碼的結果,因此資料幀包含 id,但代碼列只是 0 和 1。由于這個資料是一個熱編碼的,我們可以有很多代碼列,但唯一需要替換的是 code3 和 code4
示例輸入
| ID | 代碼1 | 代碼3 | 代碼4 | 代碼 5 | 代碼..n |
|---|---|---|---|---|---|
| 美國廣播公司 | 1 | 1 | 1 | 1 | 1 |
| CDE | 0 | 1 | 1 | 0 | 1 |
| EFG | 1 | 0 | 1 | 0 | 1 |
我想完成以下
每行如果除 code3 和 code4 之外的任何其他列中有任何 1,則將 code3 和 code4 列中的 1 替換為 0
示例輸出
| ID | 代碼1 | 代碼3 | 代碼4 | 代碼 5 | 代碼..n |
|---|---|---|---|---|---|
| 美國廣播公司 | 1 | 0 | 0 | 1 | 1 |
| CDE | 0 | 0 | 0 | 0 | 1 |
| EFG | 1 | 0 | 0 | 0 | 1 |
謝謝
uj5u.com熱心網友回復:
您可以使用布爾索引:
c = ['code3', 'code4']
df.loc[df.drop(c, axis=1).eq(1).any(1), c] = 0
id code1 code3 code4 code 5 code..n
0 ABC 1 0 0 1 1
1 CDE 0 0 0 0 1
2 EFG 1 0 0 0 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453525.html
上一篇:使用IF陳述句回圈遍歷資料幀串列
下一篇:while回圈沒有關閉
