所以我有这种数据。基本上有很多人在做某事,我们会跟踪他们。所以我对其中一项活动感兴趣,即跑步。 ID-人的ID,日期-日期,完成-如果他们当天运行,则为是。我想找出某些时期人们进行这项活动的次数。
ID DATE DONE
1 2009-1-3 Yes
1 2009-1-15 Yes
2 2009-9-3 Yes
3 2009-10-7 No
1 2009-12-1 Yes
3 2009-10-8 Yes
2 2009-10-21 Yes
我想要这样的东西,不一定就是这样。
ID PERIOD COUNT
1 2009-1 2
2009-12 1
2 2009-9 1
2009-10 1
3 2009-10 1
谢谢!
答案 0 :(得分:1)
如果还需要计算find A0001
之类的值,例如No
用布尔掩码汇总0
,则在月期间使用Series.dt.to_period
:
sum
或者您可以首先仅过滤带有df1 = ((df['DONE'] == 'Yes')
.groupby([df['ID'], pd.to_datetime(df['DATE']).dt.to_period('m')])
.sum()
.astype(int)
.reset_index(name='COUNT'))
print (df1)
ID DATE COUNT
0 1 2009-01 2
1 1 2009-12 1
2 2 2009-09 1
3 2 2009-10 1
4 3 2009-10 1
的行,并按GroupBy.size
汇总计数:
Yes