大熊猫重叠重采样

时间:2020-03-09 14:34:51

标签: python-3.x pandas resampling

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

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

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

1 个答案:

答案 0 :(得分:2)

假设您的数据有规律地排列,您可以Suite Setup进行移位的序列,然后求和。

***Settings***
    Suite Setup    boot device

concat

对于多列,将其沿列轴变成N = 10 # Every 10 seconds from first row ov = 2 # 2s overlap on either side pd.concat([df.shift(i).iloc[::N] for i in range(-ov, N+ov)], axis=1).sum(1)

date
2018-03-09 12:00:00     3.0
2018-03-09 12:00:10    15.0
2018-03-09 12:00:20    28.0
2018-03-09 12:00:30    34.0
dtype: float64