我有一个带时间戳的数据帧,我使用dataframe.rolling((在一个小时间窗口(10秒(内查找事件,遵循这个问题的公认答案。
但是,我想为出现在同一时间窗口内的所有行添加一个具有唯一组ID的新列。
运行接受的答案后,我的数据帧如下所示:
timestamp user_id count
2021-01-08 10:00:01 1 1
2021-01-08 10:00:02 2 2
2021-01-08 10:00:03 3 3
2021-01-08 10:00:09 1 4
2021-01-08 11:00:01 1 1
2021-01-08 11:00:02 7 2
2021-01-08 11:00:11 3 1
我想要的输出是这样的:
timestamp user_id count window_group
2021-01-08 10:00:01 1 1 1
2021-01-08 10:00:02 2 2 1
2021-01-08 10:00:03 3 3 1
2021-01-08 10:00:09 1 4 1
2021-01-08 11:00:01 1 1 2
2021-01-08 11:00:02 7 2 2
2021-01-08 11:00:11 3 1 3
您可以用diff
和boolean not(~
(来识别数字重置,然后用cumsum
:
df['window_group'] = (~df['count'].diff().gt(0)).cumsum()
输出:
timestamp user_id count window_group
0 2021-01-08 10:00:01 1 1 1
1 2021-01-08 10:00:02 2 2 1
2 2021-01-08 10:00:03 3 3 1
3 2021-01-08 10:00:09 1 4 1
4 2021-01-08 11:00:01 1 1 2
5 2021-01-08 11:00:02 7 2 2
6 2021-01-08 11:00:11 3 1 3