gpt4 book ai didi

python - Pandas - 如何在一行中合并 2 个相关事件

转载 作者:行者123 更新时间:2023-12-03 23:07:46 25 4
gpt4 key购买 nike

我每天都有这样的用户登录/注销数据:

date,user,action
2020-04-14 01:00:00,user1,login
2020-04-14 01:05:00,user2,login
2020-04-14 01:10:00,user3,login
2020-04-14 02:40:00,user2,logout
2020-04-14 02:50:00,user3,logout
2020-04-14 03:10:00,user2,login
2020-04-14 03:10:00,user1,logout
2020-04-14 03:30:00,user3,login
2020-04-14 04:20:00,user2,logout

用户可以在一天内多次登录/注销。一个 session 关闭,然后新 session 打开。 (如用户 2)
我需要获取每个 session 的持续时间,并且没有 session ID。

如何将这两个事件合并为一行:登录和登录后第一次注销。像这样:
login_date,logout_date,user
2020-04-14 01:00:00,2020-04-14 03:10:00,user1
2020-04-14 01:05:00,2020-04-14 02:40:00,user2
2020-04-14 01:10:00,2020-04-14 02:50:00,user3
2020-04-14 03:10:00,2020-04-14 04:20:00,user2
2020-04-14 03:30:00,-,user3

最佳答案

IUC:

(df.assign(row=lambda x: df.action.eq('login').groupby(df['user']).cumsum())
.pivot_table(index=['row','user'], columns='action', values='date', aggfunc='first')
.reset_index('row', drop=True)
.reset_index()
)

输出:
action   user                login               logout
0 user1 2020-04-14 01:00:00 2020-04-14 03:10:00
1 user2 2020-04-14 01:05:00 2020-04-14 02:40:00
2 user3 2020-04-14 01:10:00 2020-04-14 02:50:00
3 user2 2020-04-14 03:10:00 2020-04-14 04:20:00
4 user3 2020-04-14 03:30:00 NaN

关于python - Pandas - 如何在一行中合并 2 个相关事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com