2015-12-03 31 views
1

我有一個如下所示的數據框(我已經根據item列對它進行了排序)。例如,項目1-10,11-20,...(每10項)都屬於同一類別,我想找到每個類別中得分最高的項目並將其返回。在python數據框中結合多行查找最大值

什麼是最有效的方法呢?

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 

回答

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 
相關問題