如何使用Pandas分组统计一个时间段内的频率

2024-06-17 15:43:26 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我对示例数据帧进行了排序,如下所示

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

注:截至2017年7月2日,2017年1月30日的2个电话是在一周前收到的,因此不计算在内

我该如何在熊猫身上做到这一点?谢谢你的帮助


Tags: 数据示例date客户排序电话customeridcallid
1条回答
网友
1楼 · 发布于 2024-06-17 15:43:26

groupby一起使用rolling

df['NumOfCallsOneWeek']=df.groupby('CustomerID').apply(lambda x : x.set_index('Date').rolling('7D').count())['CallID'].values
df
Out[951]: 
   CustomerID  CallID       Date  NumOfCallsOneWeek
0         123       1 2017-01-30                1.0
1         123       2 2017-01-31                2.0
2         123       3 2017-02-03                3.0
3         123       4 2017-02-07                2.0
4         123       5 2017-02-08                3.0

相关问题 更多 >