例如有如下数据,需要获取score为前5的数据。
score cat
18 B
18 A
17 A
16 B
16 A
15 B
14 B
13 A
12 A
10 B
9 B
这个问题的核心在于score中的数据是允许重复的,直接获取前5名的方法并不可取,下面介绍下如何使用factorize函数来实现。
>>> df['rnk'] = df.score.factorize()[0] + 1
>>> df
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
7 13 A 6
8 12 A 7
9 10 B 8
10 9 B 9
>>> 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
哈哈。代码还是比较容易理解的,可以参考上一篇文章。有兴趣的话欢迎关注python小工具一起学习pandas和pyhton