我有一个数据集,如下所示:
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
答案 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
(请注意,示例数据中有9881
和9887
,预期输出中有9887
两次。)