如何使用熊猫按组计算时间段内的频率

假设我已经对样本数据框进行了排序,如下所示


CustomerID CallID       Date


123          1          01/30/2017


123          2          01/31/2017


123          3          02/03/2017


123          4          02/07/2017


123          5          02/08/2017

我想计算截至每个日期的过去 7 天内,我接到了多少个来自同一客户的电话。所需的输出数据帧将是


CustomerID CallID       Date         NumOfCallsOneWeek


123          1          01/30/2017    1


123          2          01/31/2017    2


123          3          02/03/2017    3


123          4          02/07/2017    2


123          5          02/08/2017    3

请注意,截至 02/07/2017,2017 年 1 月 30 日的 2 个电话是在一周前收到的,因此不计算在内。


我如何在熊猫中做到这一点?感谢您的帮助。


翻翻过去那场雪
浏览 72回答 1
1回答

茅侃侃

使用rolling与groupbydf['NumOfCallsOneWeek']=df.groupby('CustomerID').apply(lambda x : x.set_index('Date').rolling('7D').count())['CallID'].valuesdfOut[951]:    CustomerID  CallID       Date  NumOfCallsOneWeek0         123       1 2017-01-30                1.01         123       2 2017-01-31                2.02         123       3 2017-02-03                3.03         123       4 2017-02-07                2.04         123       5 2017-02-08                3.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python