Python:计算过去3天的唯一值

Python:计算过去3天的唯一值,python,python-3.x,pandas,rolling-computation,Python,Python 3.x,Pandas,Rolling Computation,我有一个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

我有一个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天中唯一出现的用户ID。预期输出如下所示:

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   

我怎样才能做到这一点呢?

使用pandas groupby该文档非常好

它非常简单-让我通过下面的片段和注释引导您了解它

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()

谢谢你的回答,我已经测试过了。不过,最终的滚动总和并没有考虑到两天之间重复的用户ID。例如如果用户ID“b”发生在第一天和第二天,则将重复计算。