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

时间:2017-03-28 16:44:37

标签: 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      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

我将如何做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:3)

您似乎正在寻找标准分区。有几种方法可以做到这一点,但我已经采用以下方式。尝试以下(注意我更改/压缩了一些数据):

df

输出:

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

输入

df['attempt'] = df.sort_values('academic_term').groupby(['student_id', 'course_id'], sort=False).cumcount()+1

输出:

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
相关问题