熊猫如何对列进行分组,排序和排名

时间:2019-07-16 17:56:13

标签: python-3.x pandas dataframe

我有一个数据集,如下所示:

student_id     course_marks
1234           10
9887           30
9881           20
5634           40
5634           50
1234           60
1234           70

我想使用Course_marks对它们进行排序,然后在他们的student_id中对其进行排名

预期:

student_id     course_marks   rank
1234           10             1
1234           60             2
1234           70             3
5634           40             1
5634           50             2
9887           20             1
9887           30             2

1 个答案:

答案 0 :(得分:2)

df['rank'] = df.groupby('student_id')['course_marks'].rank()
   student_id  course_marks  rank
0        1234            10   1.0
1        9887            30   1.0
2        9881            20   1.0
3        5634            40   1.0
4        5634            50   2.0
5        1234            60   2.0
6        1234            70   3.0

或排序:

   student_id  course_marks  rank
0        1234            10   1.0
5        1234            60   2.0
6        1234            70   3.0
3        5634            40   1.0
4        5634            50   2.0
2        9881            20   1.0
1        9887            30   1.0

(请注意,示例数据中有98819887,预期输出中有9887两次。)