現在,我正在使用這個資料框..
| 姓名 | 解決日期 | 積分 |
|---|---|---|
| 吉米 | 12/3 | 100 |
| 蒂姆 | 12/4 | 50 |
| 喬 | 12/5 | 25 |
| 強尼 | 12/5 | 25 |
| 吉米 | 12/8 | 10 |
| 蒂姆 | 12/8 | 10 |
此時,如果資料集中有重復的名稱,我只是通過利用df.sort_values('DateSolved').drop_duplicates('Name', keep='last')導致這樣的資料集從資料框中洗掉最舊的(按日期)
| 姓名 | 解決日期 | 積分 |
|---|---|---|
| 喬 | 12/5 | 25 |
| 強尼 | 12/5 | 25 |
| 吉米 | 12/8 | 10 |
| 蒂姆 | 12/8 | 10 |
然而,與其放棄最舊的,我希望保留它,但減少 50% 的積分。像這樣的東西
| 姓名 | 解決日期 | 積分 |
|---|---|---|
| 吉米 | 12/3 | 50 (-50%) |
| 蒂姆 | 12/4 | 25 (-50%) |
| 喬 | 12/5 | 25 |
| 強尼 | 12/5 | 25 |
| 吉米 | 12/8 | 10 |
| 蒂姆 | 12/8 | 10 |
我怎么能去做這件事?我找不到一種方法來根據“名稱”查找重復項,然后更改同一行中“點”列的值。
謝謝!
uj5u.com熱心網友回復:
IIUC 使用:
df.loc[df.duplicated('Name', keep='last'), 'Points'] /= 2
print (df)
Name DateSolved Points
0 Jimmy 12/3 50.0
1 Tim 12/4 25.0
2 Jo 12/5 25.0
3 Jonny 12/5 25.0
4 Jimmy 12/8 10.0
5 Tim 12/8 10.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377537.html
