熊猫重叠重采样

问题描述 投票:0回答:2

我想对我的时间索引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

我尝试过分组,但是在大型数据集上非常慢。

是否有快速有效的方法来实现这一目标?

python-3.x pandas resampling
2个回答
0
投票

[带有布尔掩码的pandas.concat怎么样,从pandas.concat到最接近的dt.round的差是dt.round 2秒:

10S

[out]

<=

0
投票

假设您的数据有规律地排列,您可以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
© www.soinside.com 2019 - 2024. All rights reserved.