我有一个数据框如下所示(我已根据项目列对其进行了排序)。例如,项目1- 10,11-20,...(每10个项目)属于同一类别,我想在每个类别中找到得分最高的项目并将其返回。
最有效的方法是什么?
item score
1 1 10
3 4 1
4 6 6
39 11 2
8 12 1
9 13 1
10 15 24
11 17 9
12 18 12
13 20 7
14 22 1
59 25 3
18 28 3
19 29 2
22 34 2
23 37 1
24 38 3
25 39 2
26 40 2
27 42 3
29 45 1
31 48 1
32 53 4
33 58 4
答案 0 :(得分:2)
假设您的数据框存储在df
中g = df.groupby(pd.cut(df.item, np.arange(1, df.item.max(), 10), right=False)
)
获取每个类别的最大值
max_score_ids = g.score.agg('idxmax')
这将为您提供包含每个类别中最高分数的行的ID
item
[1, 11) 1
[11, 21) 10
[21, 31) 59
[31, 41) 24
[41, 51) 27
然后获取与这些ID相关联的项目
df.loc[max_score_ids].item
1 1
10 15
59 25
24 38
27 42