我有一個由兩列組成的資料框。A列由字串組成,B列由數字組成。A 列有我想洗掉的重復項。但是,我只想保留 B 列中編號最高的那些重復項。這是我的資料框的示例:
columnA | columnB
---------------------
a | 1
a | 2
b | 2
b | 1
我想要的是這個:
columnA | columnB
---------------------
a | 2
b | 2
使用 drop_duplicates()
uj5u.com熱心網友回復:
您可以descending根據“columnB”按順序對資料框進行排序,并drop_duplicates()在 columnA 上使用,保持第一次出現:
df.sort_values(by='columnB',ascending=False).drop_duplicates('columnA',keep='first')
columnA columnB
13 d 555
27 h 6
16 f 6
6 c 3
1 a 2
2 b 2
15 e 1
示例資料(比您的示例略有增強):
df.to_dict()
{'columnA': {0: 'a',
1: 'a',
2: 'b',
3: 'b',
4: 'c',
5: 'c',
6: 'c',
7: 'd',
8: 'd',
9: 'd',
10: 'd',
11: 'd',
12: 'd',
13: 'd',
14: 'e',
15: 'e',
16: 'f',
17: 'f',
18: 'f',
19: 'f',
20: 'f',
21: 'f',
22: 'h',
23: 'h',
24: 'h',
25: 'h',
26: 'h',
27: 'h'},
'columnB': {0: 1,
1: 2,
2: 2,
3: 1,
4: 1,
5: 2,
6: 3,
7: 33,
8: 223,
9: 3,
10: 2,
11: 1,
12: 3,
13: 555,
14: 1,
15: 1,
16: 6,
17: 5,
18: 4,
19: 3,
20: 2,
21: 1,
22: 1,
23: 2,
24: 3,
25: 4,
26: 5,
27: 6}}
uj5u.com熱心網友回復:
按 a 列對資料幀進行分組,僅取 b 列的最大值并通過此方法創建新資料幀也有幫助,因為它保留了原始資料幀的原樣。df.groupby('columnA')['columB'].max()
uj5u.com熱心網友回復:
只需按“A”分組并取最大的“B”
df.groupby('A').max()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/389953.html
