获取每种类型的前

获取每种类型的前

我有一组如下数据

ID  Type    value_1 value_2
1   A   12  89
2   A   13  78
3   A   11  92
4   A   9   79
5   B   15  83
6   B   34  91
7   B   2   87
8   B   3   86
9   B   7   85
10  C   9   83
11  C   3   85
12  C   2   87
13  C   12  88
14  C   11  82


我想根据value_1获取每种类型的前3名成员。我想到的唯一解决方案是:首先,将每个Type数据放入一个数据帧中,并根据value_1进行排序,并获得前3名;然后,将结果合并在一起。
但是,有没有简单的解决方法?为了便于讨论,我在下面提供了代码

#coding:utf-8
import pandas as pd
_data = [
    ["1","A",12,89],
    ["2","A",13,78],
    ["3","A",11,92],
    ["4","A",9,79],
    ["5","B",15,83],
    ["6","B",34,91],
    ["7","B",2,87],
    ["8","B",3,86],
    ["9","B",7,85],
    ["10","C",9,83],
    ["11","C",3,85],
    ["12","C",2,87],
    ["13","C",12,88],
    ["14","C",11,82]
]
head= ["ID","type","value_1","value_2"]
df = pd.DataFrame(_data, columns=head)

最佳答案

然后我们将groupby tailsort_values

newdf=df.sort_values(['type','value_1']).groupby('type').tail(3)
newer
    ID type  value_1  value_2
2    3    A       11       92
0    1    A       12       89
1    2    A       13       78
8    9    B        7       85
4    5    B       15       83
5    6    B       34       91
9   10    C        9       83
13  14    C       11       82
12  13    C       12       88

07-25 21:01