我有一个包含数千行的数据框,如下所示:
time type value
0 09:30:01.405735 EVENT_0 2.1
0 09:30:01.405761 EVENT_0 2.1
0 09:30:01.419743 EVENT_0 1.1
1 09:30:02.419769 EVENT_0 32.1
2 09:30:02.419775 EVENT_0 2.15
3 09:30:02.419775 EVENT_0 24.1
4 09:30:06.419775 EVENT_0 3.1
5 09:30:06.419793 EVENT_0 1.1
6 09:30:06.419793 EVENT_0 2.4
....
我们将“窗口”定义为事件的连续列表,这些事件之间的间隔不超过1秒(即两个连续事件之间的间隔为1秒或更长时间创建一个新窗口)
这里我们有3个窗口:
time type value
0 09:30:01.405735 EVENT_0 2.1
0 09:30:01.405761 EVENT_0 2.1
0 09:30:01.419743 EVENT_0 1.1
====================================
1 09:30:02.419769 EVENT_0 32.1
2 09:30:02.419775 EVENT_0 2.15
3 09:30:02.419775 EVENT_0 24.1
====================================
4 09:30:06.419775 EVENT_0 3.1
5 09:30:06.419793 EVENT_0 1.1
6 09:30:06.419793 EVENT_0 2.4
....
我试图找到一种方法来计算每个窗口的“值”列的平均值,但无法找到在pandas中正确执行此操作的方法。
答案 0 :(得分:4)
假设您的时间列是日期时间格式,并且数据框是根据时间列排序的:
# calculate the windows, gives a unique number per entry associating it to its respective window
windows = (data.time.diff().apply(lambda x: x.total_seconds()) >= 1).astype(int).cumsum()
# group by these windows and compute the value mean
data.groupby(windows).value.mean()