编辑:使用pandas从日志文件分析生成会话似乎正是我所寻找的。
我有一个包含非唯一时间戳的数据框,想要按时间窗口分组。基本逻辑如下:
1)通过在时间戳之前和之后添加n分钟创建每个时间戳的时间范围。
2)按重叠的时间范围进行分组。最终效果是时间窗口可以小到单个时间戳+/-时间缓冲区,但没有时间窗口大小上限,只要多个事件之间的距离小于时间缓冲区即可。
感觉 df.groupby(pd.TimeGrouper(minutes = n)) 是正确的答案,但我不知道如何让 TimeGrouper 在看到在时间缓冲区内的事件时创建动态时间范围。
例如,如果我针对一组事件尝试 TimeGrouper('20s'):10:34:00、10:34:08、10:34:08、10:34:15、10:34:28 和 10:34:54,则 Pandas 将给出三个组(事件落在 10:34:00-10:34:20、10:34:20-10:34:40 和 10:34:40-10:35:00 之间)。我希望只返回两个组,即 10:34:00-10:34:28,因为在该时间范围内的事件之间没有超过 20 秒的间隔,并且第二个组是 10:34:54。
找到不是静态时间范围的时间窗口的最佳方法是什么?
给定类似于以下 Series -
感谢您的选择。
我有一个包含非唯一时间戳的数据框,想要按时间窗口分组。基本逻辑如下:
1)通过在时间戳之前和之后添加n分钟创建每个时间戳的时间范围。
2)按重叠的时间范围进行分组。最终效果是时间窗口可以小到单个时间戳+/-时间缓冲区,但没有时间窗口大小上限,只要多个事件之间的距离小于时间缓冲区即可。
感觉 df.groupby(pd.TimeGrouper(minutes = n)) 是正确的答案,但我不知道如何让 TimeGrouper 在看到在时间缓冲区内的事件时创建动态时间范围。
例如,如果我针对一组事件尝试 TimeGrouper('20s'):10:34:00、10:34:08、10:34:08、10:34:15、10:34:28 和 10:34:54,则 Pandas 将给出三个组(事件落在 10:34:00-10:34:20、10:34:20-10:34:40 和 10:34:40-10:35:00 之间)。我希望只返回两个组,即 10:34:00-10:34:28,因为在该时间范围内的事件之间没有超过 20 秒的间隔,并且第二个组是 10:34:54。
找到不是静态时间范围的时间窗口的最佳方法是什么?
给定类似于以下 Series -
time
0 2013-01-01 10:34:00+00:00
1 2013-01-01 10:34:12+00:00
2 2013-01-01 10:34:28+00:00
3 2013-01-01 10:34:54+00:00
4 2013-01-01 10:34:55+00:00
5 2013-01-01 10:35:19+00:00
6 2013-01-01 10:35:30+00:00
如果我在该序列上执行df.groupby(pd.TimeGrouper('20s')),我将返回5个分组,即10:34:00-:20、:20-:40、:40-10:35:00等。 我想做的是创建一些创建弹性时间范围的函数... 只要事件在20秒内,就扩展时间范围。所以我希望得到如下结果 -
2013-01-01 10:34:00 - 2013-01-01 10:34:48
0 2013-01-01 10:34:00+00:00
1 2013-01-01 10:34:12+00:00
2 2013-01-01 10:34:28+00:00
2013-01-01 10:34:54 - 2013-01-01 10:35:15
3 2013-01-01 10:34:54+00:00
4 2013-01-01 10:34:55+00:00
2013-01-01 10:35:19 - 2013-01-01 10:35:50
5 2013-01-01 10:35:19+00:00
6 2013-01-01 10:35:30+00:00
感谢您的选择。