我有一个由两列组成的数据帧。A列由字符串组成,B列由数字组成。A列有我要删除的重复项。然而,我只想保留那些在B列中具有最高数字的重复项。这是我的数据帧的示例:
columnA | columnB
---------------------
a | 1
a | 2
b | 2
b | 1
我想要的是:
columnA | columnB
---------------------
a | 2
b | 2
使用删除重复项()
您可以根据列B按降序
顺序对数据帧进行排序,并在列A上使用drop_duplicates()
保持第一次出现:
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}}
将数据帧按a列分组,只取b列的最大值,并用此方法创建新的数据帧也会有所帮助,因为它会保持原始数据帧的原样。df.groupby('列A')['列B']. max()
按“A”分组,取最大值“B”
df.groupby('A').max()