Панды: Найти пользователей с 2 ​​взаимодействиями за 4 дня - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть Pandas DataFrame, df, со следующими столбцами:

user_id, date_of_visit

Я хочу найти всех user_id, которые посетили хотя бы два раза в любом 4-дневном окне. Так что, если бы у меня было:

user_id, date_of_visit

1, 1/4/15

1, 1/6/15

2, 1/4/15

2, 1/12/15

2, 1/23/15

Тогда моя функция вернет [1]

Я мог бы просто пройти каждый ряд, но мне интересно, есть ли лучший способ использовать Панд. Может быть, что-то с:

df.groupby('user_id')...

Спасибо!

1 Ответ

0 голосов
/ 24 апреля 2018

Вы можете сделать с rolling в пределах filter

#df.date_of_visit=pd.to_datetime(df.date_of_visit)

df.groupby('user_id').filter(lambda x : x.set_index('date_of_visit').rolling('4d').count().gt(1).any()).user_id.unique()
Out[525]: array([1], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...