select tleft.time, sum from wj(t as tleft, t, -1:0, <sum(B) as sum>, `time)
pandas可以基于时间列对数据按时间窗口进行聚合计算。官网给了一个例子:
>>> 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').sum() B 2013-01-01 09:00:00 0.0 2013-01-01 09:00:02 1.0 2013-01-01 09:00:03 3.0 2013-01-01 09:00:05 NaN 2013-01-01 09:00:06 4.0
在DolphinDB中,滑动窗口聚合函数(比如mavg, msum)是基于行号,而不是时间进行计算的。因此,对于以下代码:
t = table(09:00:00 09:00:02 09:00:03 09:00:05 09:00:06 as time, 0 1 2 NULL 4 as B) select msum(B, 2) from t
执行结果是
msum_B
------
NULL
1
3
2
4
不论时间列的数据是什么,结果总是一样的。我想知道如何在DolphinDB中像pandas一样对时间列进行rolling计算。