在python数据帧中查找组合多行的最大值

时间:2015-12-03 04:00:28

标签: python dataframe

我有一个数据框如下所示(我已根据项目列对其进行了排序)。例如,项目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

1 个答案:

答案 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