我想对我的时间索引DataFrame进行一些重叠重采样。
例如:
>>> df
data
date
2018-03-09 12:00:00 1
2018-03-09 12:00:01 1
2018-03-09 12:00:02 1
2018-03-09 12:00:03 1
2018-03-09 12:00:04 1
2018-03-09 12:00:05 1
2018-03-09 12:00:06 1
2018-03-09 12:00:07 1
2018-03-09 12:00:08 1
2018-03-09 12:00:09 1
2018-03-09 12:00:10 1
2018-03-09 12:00:11 2
2018-03-09 12:00:12 2
2018-03-09 12:00:13 2
2018-03-09 12:00:14 2
2018-03-09 12:00:15 2
2018-03-09 12:00:16 2
2018-03-09 12:00:17 2
2018-03-09 12:00:18 2
2018-03-09 12:00:19 2
2018-03-09 12:00:20 2
2018-03-09 12:00:21 3
2018-03-09 12:00:22 3
2018-03-09 12:00:23 3
2018-03-09 12:00:24 3
2018-03-09 12:00:25 3
2018-03-09 12:00:26 3
2018-03-09 12:00:27 3
2018-03-09 12:00:28 3
2018-03-09 12:00:29 3
2018-03-09 12:00:30 3
经过10秒和2秒的重叠重采样后,结果应如下所示:
>>> df
data
date
2018-03-09 12:00:10 14
2018-03-09 12:00:20 28
2018-03-09 12:00:30 34
我尝试过分组,但是在大型数据集上非常慢。
是否有快速有效的方法来实现这一目标?
假设您的数据有规律地排列,您可以mask = (df['date'] - df['date'].dt.round('10S')).abs() <= pd.Timedelta(2, unit='s')
df_resamp = pd.concat([df, df.loc[mask]]).resample('10S', on='date').sum()
转换后的序列,然后求和。
data
date
2018-03-09 12:00:00 15
2018-03-09 12:00:10 28
2018-03-09 12:00:20 43
2018-03-09 12:00:30 6
concat