如何按ID和时间段对日期时间数据进行分组?

时间:2019-04-17 11:36:59

标签: pandas pandas-groupby data-science

所以我有这种数据。基本上有很多人在做某事,我们会跟踪他们。所以我对其中一项活动感兴趣,即跑步。 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

谢谢!

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