首页 > 解决方案 > 从数据框中获取唯一用户直到当前日期 | 熊猫

问题描述

我有一个数据框如下:

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。我需要找到每个日期到目前为止的唯一用户总数。例如,所需的输出是

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)

每天我都需要找出到目前为止累积了多少唯一用户。任何帮助表示赞赏。

标签: pandasdataframe

解决方案


您可以使用drop_duplicates删除重复的 UID 并仅将实例保留在我们第一次遇到特定 UID 的日期。(例如,这将确保我们只计算 2020 年 12 月 20 日的 UID 101,而不是 2020 年 12 月 20 日的第二次)。从那里,按您的独特日期分组,并用于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

推荐阅读