我想计算以ms为时间戳的数据集的滚动移动平均值,但是不规则。对于2天的数据帧,不规则数据集具有~36K记录。如果我重新采样到ms条,我融化了计算机,并成为32M条。
要明确,请考虑从熊猫/users/me/
route中获取的以下数据集:
(我已将NaN更改为0)
df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},index =
[pd.Timestamp('20130101 09:00:00'),
pd.Timestamp('20130101 09:00:02'),
pd.Timestamp('20130101 09:00:03'),
pd.Timestamp('20130101 09:00:05'),
pd.Timestamp('20130101 09:00:06')])
df.rolling('2s').mean()
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:02 1.0
2013-01-01 09:00:03 1.5
2013-01-01 09:00:05 0.0
2013-01-01 09:00:06 2.0
但我喜欢的答案是:
df.rolling('2s').mean()
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:02 0.5
2013-01-01 09:00:03 1.5
2013-01-01 09:00:05 1.0
2013-01-01 09:00:06 2.0
这有条目前滚(ffill样式)以计算均值。我想解决这个问题,而不会爆炸内存使用情况,而不是顺序完成它(我知道我可以做)。
我原以为:
df.rolling('2s', freq='1s').mean()
可以工作,但它会抛出一个错误,期望7行,但只有5行(ValueError:传递值的形状是(1,5),索引暗示(1,7))。
如果我使用pad重新采样到另一个数据帧,然后执行滚动操作,则可以:
df2 = df.resample('1s').pad()
df2.rolling('2s').mean()
这是否有内置?或者我只是迭代?