在pandas中对不规则时间序列进行降采样

4 投票
1 回答
2727 浏览
提问于 2025-04-17 19:08

我在pandas中有一个时间序列,长得像这样:


2012-01-01 00:00:00.250000    12
2012-01-01 00:00:00.257000    34
2012-01-01 00:00:00.258000    45
2012-01-01 00:00:01.350000    56
2012-01-01 00:00:02.300000    78
2012-01-01 00:00:03.200000    89
2012-01-01 00:00:03.500000    90
2012-01-01 00:00:04.200000    12

有没有办法把它降采样到1秒的数据,而不需要对齐到1秒的边界?比如说,有没有办法提取出这些数据(假设降采样的方式是使用在采样时间之前或正好在采样时间的最新值):


2012-01-01 00:00:00.250000    12
2012-01-01 00:00:01.250000    45
2012-01-01 00:00:02.250000    56
2012-01-01 00:00:03.250000    89
2012-01-01 00:00:04.250000    12

1 个回答

5

创建一个时间索引,频率设置为每秒一次,偏移量为四分之一秒,像这样。

index = pd.date_range('2012-01-01 00:00:00.25', 
                      '2012-01-01 00:00:04.25', freq='S')

然后把你的数据调整到这个索引上,并使用“向前填充”的方法来减少数据的数量,达到你想要的结果。

s.reindex(index, method='ffill')
                            data
2012-01-01 00:00:00.250000    12
2012-01-01 00:00:01.250000    45
2012-01-01 00:00:02.250000    56
2012-01-01 00:00:03.250000    89
2012-01-01 00:00:04.250000    12

撰写回答