Python 将重复计数列添加到数据帧

Python 将重复计数列添加到数据帧,python,pandas,dataframe,iteration,Python,Pandas,Dataframe,Iteration,我有一个pandas数据框,其中有一个已尝试的课程列表:学生ID、课程ID、尝试的学期以及他们获得的分数。它看起来有点像: Student ID Course ID Academic Term Final Grade N99999 MAT101 201501 2.0 N99999 MAT101 201509 2.5 N11111 CHE101

我有一个pandas数据框,其中有一个已尝试的课程列表:学生ID、课程ID、尝试的学期以及他们获得的分数。它看起来有点像:

Student ID       Course ID   Academic Term    Final Grade   
N99999           MAT101      201501           2.0 
N99999           MAT101      201509           2.5
N11111           CHE101      201609           3.0
N11111           PSY101      201601           0.0
N11111           PSY101      201701           2.0           
我感兴趣的是分析他们的成绩,以及学生是否通过重复一门课程而有所进步

为此,我想添加一个“尝试”列,其中每个组合课程和ID号的学期值最低的行将得到1,下一行得到2,以此类推

Student ID       Course ID   Academic Term    Final Grade  Attempt 
N99999           MAT101      201501           2.0          1
N99999           MAT101      201509           2.5          2
N11111           CHE101      201609           3.0          1
N11111           PSY101      201601           0.0          1
N11111           PSY101      201701           2.0          2
我该怎么做呢


多谢各位

看起来您正在寻找标准分区。有几种方法可以做到这一点,但我一直在做下面的方式。尝试以下方法(注意我更改/压缩了一些数据):

输出:

student_id course_id academic_term  final_grade
0       n999    mat101        201501          2.0
1       n999    mat101        201509          2.5
2       n111    che101        201609          3.0
3       n111    psy101        201601          0.0
4       n111    psy101        201701          2.0
student_id course_id academic_term  final_grade  attempt
0       n999    mat101        201501          2.0        1
1       n999    mat101        201509          2.5        2
2       n111    che101        201609          3.0        1
3       n111    psy101        201601          0.0        1
4       n111    psy101        201701          2.0        2
输入

输出:

student_id course_id academic_term  final_grade
0       n999    mat101        201501          2.0
1       n999    mat101        201509          2.5
2       n111    che101        201609          3.0
3       n111    psy101        201601          0.0
4       n111    psy101        201701          2.0
student_id course_id academic_term  final_grade  attempt
0       n999    mat101        201501          2.0        1
1       n999    mat101        201509          2.5        2
2       n111    che101        201609          3.0        1
3       n111    psy101        201601          0.0        1
4       n111    psy101        201701          2.0        2

看起来您正在寻找一个标准分区。有几种方法可以做到这一点,但我一直在做下面的方式。尝试以下方法(注意我更改/压缩了一些数据):

输出:

student_id course_id academic_term  final_grade
0       n999    mat101        201501          2.0
1       n999    mat101        201509          2.5
2       n111    che101        201609          3.0
3       n111    psy101        201601          0.0
4       n111    psy101        201701          2.0
student_id course_id academic_term  final_grade  attempt
0       n999    mat101        201501          2.0        1
1       n999    mat101        201509          2.5        2
2       n111    che101        201609          3.0        1
3       n111    psy101        201601          0.0        1
4       n111    psy101        201701          2.0        2
输入

输出:

student_id course_id academic_term  final_grade
0       n999    mat101        201501          2.0
1       n999    mat101        201509          2.5
2       n111    che101        201609          3.0
3       n111    psy101        201601          0.0
4       n111    psy101        201701          2.0
student_id course_id academic_term  final_grade  attempt
0       n999    mat101        201501          2.0        1
1       n999    mat101        201509          2.5        2
2       n111    che101        201609          3.0        1
3       n111    psy101        201601          0.0        1
4       n111    psy101        201701          2.0        2