首页 > 解决方案 > 如何在 Pandas 上使用参考初始时间戳对 30 分钟的会话进行分组?

问题描述

所以基本上我有一堆用户进入我的网站,我需要他们按他们的会话分组。会话是自第一次登录以来使用相同 ID 的 30 分钟连接。如果超过 30 分钟,则视为新会话。

样本输入:

id,timestamp_datetime
1,2020-04-25 21:28:57.499 # Session 1 - first session
1,2020-04-25 21:41:41.691 
1,2020-04-25 21:41:11.055
1,2020-04-25 22:00:00.015  # Session 1 - second session (more then 30 minutes)
2,2020-04-25 21:41:41.691  # Session 2 - first session
2,2020-04-25 22:00:00.015 
2,2020-04-25 22:30:03.838  # Session 2 - second session
3,2020-04-25 21:41:41.691

样本输出:

id, count_sessions
1, 2
2, 2
3, 1

我试过这个

df.groupby([df.index.to_period('30T'),"id"]).count()

但它给了我错误的结果。请帮我修复它。

标签: pythonpandastime-series

解决方案


就像是:

np.ceil(df.groupby('id').diff().cumsum()/30)

推荐阅读