在类别PD中获得排名

时间:2019-05-03 07:20:34

标签: python pandas

给出一个数据框:

import pandas as pd

df = pd.DataFrame([
{'class' : 'a', 'score' : 10},
{'class' : 'a', 'score' : 30},
{'class' : 'a', 'score' : 20},
{'class' : 'b', 'score' : 15},
{'class' : 'b', 'score' : 25},
{'class' : 'b', 'score' : 35},])

class  score
0     a     10
1     a     30
2     a     20
3     b     15
4     b     25
5     b     35

我正在尝试创建一个新列rank,该列是该类中值的等级。因此结果将是:

class  score  rank
0     a     10     3
1     a     30     1
2     a     20     2
3     b     15     3
4     b     25     2
5     b     35     1

这样做的最佳方法是什么?使用apply还是pd本机函数?

1 个答案:

答案 0 :(得分:3)

您可以首先在class列中groupby使用数据框,然后使用Series.rank获得score列的排名。

df['rank'] = df.groupby(['class'], sort=False)['score'].rank(ascending=False)