假设我已经对样本数据框进行了排序,如下所示CustomerID CallID Date123 1 01/30/2017123 2 01/31/2017123 3 02/03/2017123 4 02/07/2017123 5 02/08/2017我想计算截至每个日期的过去 7 天内,我接到了多少个来自同一客户的电话。所需的输出数据帧将是CustomerID CallID Date NumOfCallsOneWeek123 1 01/30/2017 1123 2 01/31/2017 2123 3 02/03/2017 3123 4 02/07/2017 2123 5 02/08/2017 3请注意,截至 02/07/2017,2017 年 1 月 30 日的 2 个电话是在一周前收到的,因此不计算在内。我如何在熊猫中做到这一点?感谢您的帮助。
1 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
使用rolling与groupby
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
添加回答
举报
0/150
提交
取消