【问题标题】:Add repeat count column to a pandas dataframe将重复计数列添加到熊猫数据框
【发布时间】:2017-08-21 20:47:43
【问题描述】:

我有一个 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

我该怎么做呢?

谢谢。

【问题讨论】:

    标签: python pandas dataframe iteration


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 1970-01-01
      • 2018-12-14
      • 2016-09-08
      • 1970-01-01
      • 2021-09-15
      • 2021-09-24
      • 2012-09-04
      • 1970-01-01
      相关资源
      最近更新 更多