我在作业ID级别有一个数据框,其中包括提交日期,学生ID。我想查找最近12个月中学生提交的作业数量(不包括最新条目)。分配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
Run Code Online (Sandbox Code Playgroud)
我想要的是
student id date of submission count_in_12_mon
100357 2/1/2017 3
100364 2/1/2018 4
Run Code Online (Sandbox Code Playgroud)
您可能需要max
使用 查找每个组的值transform
,然后将其转换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
Run Code Online (Sandbox Code Playgroud)