gpt4 book ai didi

python - 在 Python 中分组并查找连续时间并创建一个标志

转载 作者:行者123 更新时间:2023-12-01 03:14:58 25 4
gpt4 key购买 nike

以下是我得到的数据,

id  name    unused      time
1 a 1 2/21/2017 18:01:31.168
1 a 2 2/21/2017 18:01:31.168
1 a 3 2/21/2017 18:11:44.054
1 a 4 2/21/2017 18:19:03.147
1 b 5 2/21/2017 18:19:03.147
1 b 6 2/21/2017 21:55:43.927
1 b 7 2/21/2017 22:10:29.699
1 b 8 2/21/2017 22:10:29.699
2 a 9 2/21/2017 23:36:30.239
2 a 10 2/21/2017 23:45:40.005
2 a 11 2/22/2017 00:05:43.466
2 a 12 2/22/2017 00:05:43.466
2 b 13 2/22/2017 00:16:00.646
2 b 14 2/22/2017 11:43:16.250
2 b 15 2/22/2017 11:43:16.250
2 b 16 2/22/2017 14:02:10.531

我想将其与 id、name 进行分组,并查找连续的时间戳并为其创建一个标志。例如,第一行和第二行具有相同的 id、名称和时间,因此我希望这两个值均为 1,如果不连续,则应为 0。

以下是我想要实现的输出,

id  name    unused      time               flag
1 a 1 2/21/2017 18:01:31.168 1
1 a 2 2/21/2017 18:01:31.168 1
1 a 3 2/21/2017 18:11:44.054 0
1 a 4 2/21/2017 18:19:03.147 0
1 b 5 2/21/2017 18:19:03.147 0
1 b 6 2/21/2017 21:55:43.927 0
1 b 7 2/21/2017 22:10:29.699 1
1 b 8 2/21/2017 22:10:29.699 1
2 a 9 2/21/2017 23:36:30.239 0
2 a 10 2/21/2017 23:45:40.005 0
2 a 11 2/22/2017 00:05:43.466 1
2 a 12 2/22/2017 00:05:43.466 1
2 b 13 2/22/2017 00:16:00.646 0
2 b 14 2/22/2017 11:43:16.250 1
2 b 15 2/22/2017 11:43:16.250 1
2 b 16 2/22/2017 14:02:10.531 0

以下是我的尝试,

我正在尝试用它来排序,

data.sort_values(['id', 'name', 'time'])

然后我想将其分组,

data.sort_values(['id', 'name', 'time']).groupby(['id', 'name'])

但此后我无法创建标志。我正在考虑一个解决方案,我可以编写一个 for 循环并循环遍历所有值并检查条件。但我认为应该有一个有效的解决方案,因为我需要找到它的百万行。

谁能帮我解决这个问题吗?

谢谢

最佳答案

一种方法可能是仅使用 shift将前一列和后一列与您感兴趣的列进行比较。

eval_cols = df[['id', 'name', 'time']]
df['flag'] = ((eval_cols == eval_cols.shift()).all(1) |
(eval_cols == eval_cols.shift(-1)).all(1)).astype(int)

演示

>>> ((eval_cols == eval_cols.shift()).all(1) | 
(eval_cols == eval_cols.shift(-1)).all(1)).astype(int)

0 1
1 1
2 0
3 0
4 0
5 0
6 1
7 1
8 0
9 0
10 1
11 1
12 0
13 1
14 1
15 0
dtype: int32

关于python - 在 Python 中分组并查找连续时间并创建一个标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42540955/

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