gpt4 book ai didi

python - 将当前行值与前一行值进行比较

转载 作者:行者123 更新时间:2023-12-03 17:15:31 27 4
gpt4 key购买 nike

我有来自用户 A 一天的登录历史数据。我的要求是用户 A 在任何时候都只能有一个有效的登录名。在下面的示例中,用户可能多次尝试成功登录,而他的第一个 session 仍处于事件状态。因此,在有效 session 期间发生的任何登录都需要标记为重复。
示例 1:
在下面的第一个示例数据中,当用户仍然从 00:12:38 登录时至 01:00:02 (index 0) ,还有来自用户的另一个登录 00:55:1401:00:02 (index 1) .
同样,如果我们比较 index 23 ,我们可以看到记录在index 3根据要求重复登录。

  start_time  end_time
0 00:12:38 01:00:02
1 00:55:14 01:00:02
2 01:00:02 01:32:40
3 01:00:02 01:08:40
4 01:41:22 03:56:23
5 18:58:26 19:16:49
6 20:12:37 20:52:49
7 20:55:16 22:02:50
8 22:21:24 22:48:50
9 23:11:30 00:00:00
预期输出:
  start_time  end_time   isDup
0 00:12:38 01:00:02 0
1 00:55:14 01:00:02 1
2 01:00:02 01:32:40 0
3 01:00:02 01:08:40 1
4 01:41:22 03:56:23 0
5 18:58:26 19:16:49 0
6 20:12:37 20:52:49 0
7 20:55:16 22:02:50 0
8 22:21:24 22:48:50 0
9 23:11:30 00:00:00 0
这些重复记录需要在 isDup 列更新为 1。 .

示例 2:
另一个数据示例如下。在这里,当用户在 13:36:10 之间仍然登录时和 13:50:16 ,还有 3 个额外的 session 需要标记。
  start_time  end_time
0 13:32:54 13:32:55
1 13:36:10 13:50:16
2 13:37:54 13:38:14
3 13:46:38 13:46:45
4 13:48:59 13:49:05
5 13:50:16 13:50:20
6 14:03:39 14:03:49
7 15:36:20 15:36:20
8 15:46:47 15:46:47
预期输出:
  start_time    end_time    isDup
0 13:32:54 13:32:55 0
1 13:36:10 13:50:16 0
2 13:37:54 13:38:14 1
3 13:46:38 13:46:45 1
4 13:48:59 13:49:05 1
5 13:50:16 13:50:20 0
6 14:03:39 14:03:49 0
7 15:36:20 15:36:20 0
8 15:46:47 15:46:47 0

将当前记录的开始时间与以前的记录进行比较的有效方法是什么?

最佳答案

查询 duplicated()并将 astype 更改为 int

df['isDup']=(df['Start time'].duplicated(False)|df['End time'].duplicated(False)).astype(int)
或者你需要
df['isDup']=(df['Start time'].between(df['Start time'].shift(),df['End time'].shift())).astype(int)

关于python - 将当前行值与前一行值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63840851/

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