我有一個包含列中重復值的資料框,我需要識別重復項,保留第一個并替換其他的,可能為零或 NaN
這是 df 的一個例子
| ID | 表 | 行業 | 物流 | 商業 | 回饋 | 回傳 | 完成的 |
|---|---|---|---|---|---|---|---|
| 1 | 166 | 325158.0 | NaN | 沒有任何 | 2140957.0 | NaN | NaN |
| 2 | 379 | 161616.0 | 417296.0 | 沒有任何 | 1808454.0 | NaN | NaN |
| 3 | 136 | 1729.0。 | 417296.0 | 沒有任何 | 1734326.0 | NaN | 217 |
| 4 | 1173 | 174533.0 | 417296.0 | 沒有任何 | 1734188.0 | NaN | 217 |
| 5 | 111 | 1531.0 | 406413.0 | 沒有任何 | 1714706.0 | NaN | 217 |
預期結果:
| ID | 表 | 行業 | 物流 | 商業 | 回饋 | 回傳 | 完成的 |
|---|---|---|---|---|---|---|---|
| 1 | 166 | 325158.0 | NaN | 沒有任何 | 2140957.0 | NaN | NaN |
| 2 | 379 | 161616.0 | 417296.0 | 沒有任何 | 1808454.0 | NaN | NaN |
| 3 | 136 | 1729.0。 | 沒有任何 | 沒有任何 | 1734326.0 | NaN | 217 |
| 4 | 1173 | 174533.0 | 沒有任何 | 沒有任何 | 1734188.0 | NaN | 沒有任何 |
| 5 | 111 | 1531.0 | 406413.0 | 沒有任何 | 1714706.0 | NaN | 沒有任何 |
uj5u.com熱心網友回復:
例如,要替換 Logistic 列中的重復項,首先要找到重復項:
df.Logistic.duplicated()
默認情況下,keep = ‘first’(有關pd.duplicated 的更多資訊)
因此,當您使用 .loc 本地化所有重復項時,您可以輕松替換它們:
df.loc[df.Logistic.duplicated(), 'Logistic'] = None
for 回圈可以為您的所有列執行此技巧:
for col_name in df.columns:
df.loc[df[col_name].duplicated(), col_name] = None
如果有人有更優雅的方法來為所有列做這件事,我很樂意看到它:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402275.html
上一篇:在空格之間選擇子字串
下一篇:資料框將列(陣列)與標量相乘
