Сгруппировать и посчитать значения за последние 24 часа - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть объявление df, которое выглядит следующим образом:

user_id   session_id     timestamp          
141.0      1.0   20190418 02:23:56.000 
141.0      2.0   20190416 19:51:57.000 
141.0      3.0   20190415 14:47:53.000   
121.0      4.0   20190414 13:57:55.000    
121.0      5.0   20190414 06:23:01.000  
121.0      6.0   20190412 15:32:57.000 

Я пытаюсь применить лямбда-функцию с группой, по которой для каждого user_id подсчитывается количество сеансов за последние 24 часа отметка времени сеанса:

Результат должен быть следующим:


user_id   session_id     timestamp            24-HourCount  
141.0      1.0   20190418 02:23:56.000             0
141.0      2.0   20190416 19:51:57.000             0
141.0      3.0   20190415 14:47:53.000             na  
121.0      4.0   20190414 13:57:55.000             3
121.0      5.0   20190414 06:23:01.000             1
121.0      6.0   20190413 15:32:57.000             na 

Я попытался сгруппировать и посчитать количество строк (все сеансы имеют разные значения), но я получаю ошибку.

df['24-HourCount'] = df.groupby('user_id')['timestamp'].transform(lambda x:\
          x.between(x.max()- dt.timedelta(days=1),x.max())).count()))

tried also applying the function:
def func(dfx):
    k=dfx[dfx.between(dfx[0]-dt.timedelta(days=1),dfx[0])].count()
    return(k)

df['24-HourCount']=df.groupby('user_id').apply(func)

Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...