Python: считать уникальное значение за последние 3 дня - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть df, который представляет собой временной ряд данных доступа пользователей

UserID     Access Date
a          10/01/2019
b          10/01/2019
c          10/01/2019
a          10/02/2019
b          10/02/2019 
d          10/02/2019
e          10/03/2019
f          10/03/2019
a          10/03/2019
b          10/03/2019
a          10/04/2019
b          10/04/2019
c          10/05/2019

У меня есть другой df, в котором перечислены даты, и я хочу объединить уникальные вхождения идентификаторов пользователей за последние 3 дня , Ожидаемый результат будет выглядеть следующим образом:

Date         Past_3_days_unique_count
10/01/2019   NaN
10/02/2019   NaN
10/03/2019   6
10/04/2019   5
10/04/2019   5   

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Это довольно просто - позвольте мне рассказать вам об этом через следующий фрагмент и его комментарии.

import pandas as pd
import numpy as np

# Generate some dates
dates = pd.date_range("01-01-2016", "01-10-2016", freq="6H")

# Generate some user ids
ids = np.random.randint(1, 5, len(dates))

df = pd.DataFrame({"id": ids, "date": dates})

# Collect unique IDs for each day
q = df.groupby(df["date"].dt.to_period("D"))["id"].nunique()

# Grab the rolling sum over 3 previous days which is what we wanted
q.rolling(3).sum()
0 голосов
/ 24 апреля 2020

Использование pandas Группировка документации очень хорошая

...