Как посчитать частоту за период по группам, используя панд - PullRequest
0 голосов
/ 20 сентября 2018

Предположим, я отсортировал примерный фрейм данных, выглядит так:

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, 2 вызова на 30.01.2017 принимаются более недели назад, поэтому они не учитываются.

Как мне это сделать в пандах?Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 20 сентября 2018

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...