简单的数据框:
df = pd.DataFrame({'A': [1,1,2,2], 'B': [0,1,2,3], 'C': ['a','b','c','d']})
df
A B C
0 1 0 a
1 1 1 b
2 2 2 c
3 2 3 d
我希望对于列A的每个值(groupby
),获取列B最大的列C的值。例如,对于列A的1组,列B的最大值为1,因此我想要列C的值为“b”:
A C
0 1 b
1 2 d
不需要假设B列已排序,性能是最重要的,然后才是优雅。
timeit
的测试结果,它比 @coldspeed 的答案快了 0.0002 秒 [np.mean(timeit.repeat("df.sort_values('B').drop_duplicates(['A'],keep='last')", number = 1, repeat = 100, globals = globals()))
]。 - Giora Simchoni