选择groupby中的前3个元素

时间:2017-01-26 07:47:05

标签: pandas

根据表格给出以下pandas分组,如何在每个index中获得Offline_RentetionAge的前3 CPUCore,并保留表的结构?

enter image description here

对于上述结果,结果应为

   CPUCore  Offline_RetetionAge  index
0        i7     183                4184
1               7                  1981
2               30                  471
3        i5     ..                ...

1 个答案:

答案 0 :(得分:1)

如果index column中的值已排序,您可以使用GroupBy.head

df = df.groupby(level=0).head(3)

样品:

df = pd.DataFrame({'CPUCore':['i7'] * 4 + ['i5'] * 4,
                    'Offline_RetetionAge':['100','1','12','120','15','10','20','3'],
                   'index':[11,16,5,4,30,18,2,1]})
       .set_index(['CPUCore','Offline_RetetionAge'])

print (df)
                             index
CPUCore Offline_RetetionAge       
i7      100                     11
        1                       16
        12                       5
        120                      4
i5      15                      30
        10                      18
        20                       2
        3                        1

df = df.groupby(level=0).head(3)
print (df)
                             index
CPUCore Offline_RetetionAge       
i7      100                     11
        1                       16
        12                       5
i5      15                      30
        10                      18
        20                       2