从pandas滚动窗口附加唯一的组ID



我有一个带时间戳的数据帧,我使用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

最新更新