我在作业 ID 级别有一个数据框,其中包括提交日期、学生 ID。我想查找学生在过去 12 个月内提交的作业数量(不包括最新条目)wrt 最新条目。分配 ID 是唯一键。 我希望将累积计数作为分配 ID 的基础。
我尝试使用 groupby 执行此步骤,但找不到所需的输出。 我想用 Python 来回答。
我有什么
Assmt id student id date of submission
106473754 100357 2/1/2016
102485554 100357 3/1/2016
108474032 100357 4/1/2016
101663805 100357 2/1/2017
307953885 100364 5/1/2017
307252429 100364 7/1/2017
304205214 100364 11/1/2017
304041247 100364 11/1/2017
512459298 100364 2/1/2018
我想要什么
student id date of submission count_in_12_mon
100357 2/1/2017 3
100364 2/1/2018 4
最佳答案
您可能需要使用 transform
找到每个组的 max
值,然后将 datetime
转换为月份并与所有 date of submission
,然后使用 agg
s=df.groupby('studentid')['dateofsubmission'].transform('max')
s1=(s.dt.year*12+s.dt.month-df.dateofsubmission.dt.year*12-df.dateofsubmission.dt.month)
df['New']=((s1>0)&(s1<=12))
yourdf=df.groupby('studentid').agg({'New':'sum','dateofsubmission':'last'}).reset_index()
yourdf
Out[851]:
studentid dateofsubmission New
0 100357 2017-02-01 3.0
1 100364 2018-02-01 4.0
关于python - 执行 groupby 以查找日期范围内分配 ID 的累计计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122144/