【问题标题】:Time difference between repeat users' request_time重复用户request_time的时间差
【发布时间】:2020-06-18 16:51:04
【问题描述】:

我是 Python 新手,需要您的帮助。

我正在从事一个零售组织的项目。下面提到的数据框显示了“user_ID”,其中包含仅访问公司网站一次的用户和多次访问网站的用户。您可以看到索引 3,4 具有相同的 user_ID。索引 5,6 的情况也是如此。我需要为重复用户找到request_time_difference。即重复用户在多少时间间隔后访问该网站(任何时间单位都可以接受)。

    user_ID    request_time 
0   4c3d6d10c2 3/1/2018 23:57

1   2791ec4485 3/1/2018 22:10   

2   eb0718c1c9 3/1/2018 16:34   

3   59f84cf342 3/1/2018 22:20   

4   59f84cf342 3/1/2018 22:19   

5   a11e41cdc2 3/1/2018 8:08    

6   a11e41cdc2 3/1/2018 8:13    

7   9568fb8647 3/1/2018 15:04

8   2791ec4485 3/1/2018 13:50

9   2791ec4485 3/1/2018 13:53

10  2791ec4485 3/1/2018 13:51

11  2791ec4485 3/1/2018 13:55

【问题讨论】:

    标签: python python-3.x pandas datetime pandas-groupby


    【解决方案1】:

    IIUC,这就是你要找的东西

    df.request_time = pd.to_datetime(df.request_time)
    b = df.loc[df.user_ID.duplicated(keep=False)].sort_values(['request_time']).reset_index(drop=True)
    c = b.groupby(['user_ID'],sort=True)['request_time'].diff().reset_index(name='diff').reset_index(drop=True)
    b.merge(c, on=b.index).drop(['key_0','index'],axis=1)
    

    输出

           user_ID  request_time            diff
    0   a11e41cdc2  2018-03-01 08:08:00     NaT
    1   a11e41cdc2  2018-03-01 08:13:00     00:05:00
    2   2791ec4485  2018-03-01 13:50:00     NaT
    3   2791ec4485  2018-03-01 13:51:00     00:01:00
    4   2791ec4485  2018-03-01 13:53:00     00:02:00
    5   2791ec4485  2018-03-01 13:55:00     00:02:00
    6   2791ec4485  2018-03-01 22:10:00     08:15:00
    7   59f84cf342  2018-03-01 22:19:00     NaT
    8   59f84cf342  2018-03-01 22:20:00     00:01:00
    

    【讨论】:

    • 谢谢,请告诉我 IIUC 代表什么?
    • IIUC 代表“如果我理解正确”。如果答案帮助您考虑投票并接受答案。谢谢。
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2019-08-10
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多