按 ID 分组并按每个 ID 计算唯一的开始日期。投回数据框。 Pandas
groupby by an ID and count unique start dates by each ID. Cast back to dataframe. Pandas
我有一个 pandas 数据框:
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]
})
试试 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
我有一个 pandas 数据框:
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]
})
试试 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