首页 > 解决方案 > pandas:获取前 n 个包括已排序列的重复项

问题描述

我有一些数据,比如

这是一个按 score 列排序的表,然后是 cat 列

score   cat
18      B
18      A
17      A
16      B
16      A
15      B
14      B
13      A
12      A
10      B
9       B

我想获得包括重复项在内的前 5 名并添加排名

IE

rank    score   cat
1       18      B
1       18      A
2       17      A
3       16      B
3       16      A
4       15      B
5       14      B

我怎样才能用熊猫得到这个

标签: pandas

解决方案


既然数据框是有序的,试试factorize

df['rnk'] = df.score.factorize()[0]+1
out = df[df['rnk'] <= 5]
out
   score cat  rnk
0     18   B    1
1     18   A    1
2     17   A    2
3     16   B    3
4     16   A    3
5     15   B    4
6     14   B    5

推荐阅读