【问题标题】:groupby by an ID and count unique start dates by each ID. Cast back to dataframe. Pandas按 ID 分组并按每个 ID 计算唯一开始日期。转换回数据框。熊猫
【发布时间】:2020-11-24 16:10:09
【问题描述】:

我有一个熊猫数据框:

pd.DataFrame({
    'student_id': ['5', '5', '5', '5', '2', '2'],
    'start_date': ['2020-11-11', '2020-11-11', '2020-11-11', '2020-12-05', '2020-11-25', '2020-11-25']
})

我想按“student_id”对 df 进行分组,并计算每行有多少相同的开始日期。然后我想将它转换回原始数据框。例如,我将创建一个名为“course_enroll_count”的新列。前三行将显示 3,因为学生有 3 个开始日期为“2020-11-11”。 预期输出:

pd.DataFrame({
    'student_id': ['5', '5', '5', '5', '2', '2'],
    'start_date': ['2020-11-11', '2020-11-11', '2020-11-11', '2020-12-05', '2020-11-25', '2020-11-25'],
    'course_enroll_count': [3, 3, 3, 1, 2, 2]
})

【问题讨论】:

    标签: python-3.x pandas dataframe pandas-groupby transformation


    【解决方案1】:

    试试transform

    df['new'] = df.groupby(['student_id','start_date'])['start_date'].transform('count')
    df
    Out[313]: 
      student_id  start_date  new
    0          5  2020-11-11    3
    1          5  2020-11-11    3
    2          5  2020-11-11    3
    3          5  2020-12-05    1
    4          2  2020-11-25    2
    5          2  2020-11-25    2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2023-01-17
      相关资源
      最近更新 更多