Pandas 从dataframe获取当前日期之前的唯一用户

Pandas 从dataframe获取当前日期之前的唯一用户,pandas,dataframe,Pandas,Dataframe,我有一个数据框,如下所示: UID Date 101 20/12/2020 102 20/12/2020 102 20/12/2020 103 21/12/2020 104 21/12/2020 105 22/12/2020 101 22/12/2020 106 23/12/2020 107 23/12/2020 108 23/12/2020 在每个日期,都可能出现任何uid。我需要找到每个日期到目前为止的

我有一个数据框,如下所示:

UID     Date
101     20/12/2020
102     20/12/2020
102     20/12/2020
103     21/12/2020
104     21/12/2020
105     22/12/2020
101     22/12/2020
106     23/12/2020
107     23/12/2020
108     23/12/2020
在每个日期,都可能出现任何uid。我需要找到每个日期到目前为止的唯一用户总数。 e、 g.所需输出为

Date            Unique users till now
20/12/2020      2
21/12/2020      4
22/12/2020      5
23/12/2020      8

Explanation:
20/12/2020: Total unique users till now 2 (101, 102)
21/12/2020: Total unique users till now 4 (101, 102, 103, 104)
22/12/2020: Total unique users till now 5 (101, 102, .., 105)
23/12/2020: Total unique users till now 8 (101, 102, .., 108)
每一天我都需要找出到目前为止已经积累了多少独特的用户。 非常感谢您的帮助。

您可以使用drop\u duplicates删除重复的UID,并且只将实例保留在我们第一次遇到特定UID的日期。e、 g.这将确保我们只计算2020年12月20日的UID 101,而不是2020年12月20日的第二次UID 101。从那里,根据您的独特日期分组,并使用nunique从该日期获取唯一ID。最后,使用.cumsum获取每个日期唯一UID的累积数量:

out = (df.drop_duplicates("UID", keep="first")
         .groupby("Date")
         .nunique()
         .cumsum())

print(out)
            UID
Date
20/12/2020    2
21/12/2020    4
22/12/2020    5
23/12/2020    8
您可以使用drop_duplicates来消除重复的UID,并且只将实例保留在我们第一次遇到特定UID的日期。e、 g.这将确保我们只计算2020年12月20日的UID 101,而不是2020年12月20日的第二次UID 101。从那里,根据您的独特日期分组,并使用nunique从该日期获取唯一ID。最后,使用.cumsum获取每个日期唯一UID的累积数量:

out = (df.drop_duplicates("UID", keep="first")
         .groupby("Date")
         .nunique()
         .cumsum())

print(out)
            UID
Date
20/12/2020    2
21/12/2020    4
22/12/2020    5
23/12/2020    8

完美的成功了。谢谢!完美的成功了。谢谢!