我有一个系列,其值由时间戳索引。这些时间戳是不规则间隔的,我想在最后N秒计算类似滚动平均值(比如说),其中N是常数。不幸的是,在计算轧制量之前定期重新采样不是一个选项 - 必须在整个数据集上计算轧制数量。
在熊猫中有这么好的方法吗?
答案 0 :(得分:1)
您希望将索引重置为整数索引,并在时间戳列上执行滚动操作。
# 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()