Расчет нет.появления пользователей в частоте 30 дней в Пандах - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю с фреймом данных, когда на моем сайте появляется users.Итак, у меня есть такой фрейм данных:

dateTime      userId

2018-08-02    17898
2018-08-10    17898
2018-08-25    17898
2018-08-31    17898
2018-08-02    17898
2018-09-06    17898

Здесь dateTime - это, по сути, первый день появления в соответствующем месяце.Поэтому я хочу установить порог в 30 дней с первого дня их появления и посчитать, сколько нет.дней, человек появился.

Таким образом, мой ожидаемый фрейм данных будет выглядеть примерно так:

userId   n_days_appeared   total_days  first_appearance
17898     4                  30         2018-08-02  

Для каждого пользователя я хочу что-то вроде этого.

Так что, если человек впервые появился, скажем, 5-йавгуста, тогда его 30 дней будет 4 сентября, поэтому я хочу посчитать, сколько нет.дней, когда этот человек появился в ближайшие 30 дней с момента его появления.

1 Ответ

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

IIUC, может быть, можно использовать что-то вроде этого

df = df.set_index('dateTime')

def n_days_appeared(c): 
    return c[~c.index.duplicated()].count()

def first_appearance(c):
    return c.index.min()

def total_days(c):
    return c.index.max() - c.index.min() + pd.Timedelta(1, unit='d')

df.groupby(['userId',pd.Grouper(freq='M')]).userId.agg([n_days_appeared, 
                                                       first_appearance, 
                                                       total_days])


                     n_days_appeared    first_appearance    total_days
userId  dateTime            
17898   2018-08-31                 4    2018-08-02          30 days
        2018-09-30                 1    2018-09-06          1 days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...