Pandas变量窗口长度的滚动应用

6 投票
1 回答
3566 浏览
提问于 2025-04-18 10:35

我有一组数据,这些数据的值是通过时间戳来标记的。这些时间戳的间隔不规律,我想计算过去N秒的滚动平均值(比如说),其中N是一个固定的数字。不幸的是,在计算滚动值之前,不能把数据重新采样成规律的时间间隔——滚动值必须在整个数据集上计算。

在pandas中,有没有好的方法可以做到这一点呢?

1 个回答

3

你想把你的索引重置为整数索引,并对时间戳列进行滚动操作。

# generate some data
data = pd.DataFrame(data={'vals':range(5), 'seed_ts': [np.datetime64('2017-04-13T09:00:00') for x in range(5)]})
data['random_offset'] = [np.timedelta64(randint(0, 5), 's') for x in range(5)]
data['cum_time'] = data['random_offset'].cumsum()
data['ts'] = data['seed_ts'] + data['cum_time']
data.index = data['ts']
data = data[['vals']]

重置索引:

data = data.reset_index()

计算过去5秒的滚动平均值:

data['rolling_mean'] = data.rolling('5s', on='ts')['vals'].mean()

撰写回答