【问题标题】:pandas-like rolling on a Datetime column in DolphinDB在 DolphinDB 中的 Datetime 列上像 pandas 一样滚动
【发布时间】:2026-01-26 22:55:01
【问题描述】:

pandas DataFrame 在 DatetimeIndex 或 Datetime 类型的列上提供滚动窗口计算,如下所示:

>>> 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('3s').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  2.0
2013-01-01 09:00:06  4.0

DolphinDB 的moving 函数,以及msummavg 等移动家族的函数,都是基于内部元素数量固定的窗口计算得出的。但它们无法处理时间类型。

df = table(0 1 2 NULL 4 as B,
           [2013.01.01 09:00:00,2013.01.01 09:00:02,2013.01.01 09:00:03,2013.01.01 09:00:05,2013.01.01 09:00:06] as index)
select index, msum(B, 3) as B from df
index               B
------------------- -
2013.01.01T09:00:00  
2013.01.01T09:00:02  
2013.01.01T09:00:03 3
2013.01.01T09:00:05 3
2013.01.01T09:00:06 6

我想做一个滚动计算,窗口是一个可以包含可变大小元素的时间段。

【问题讨论】:

    标签: python pandas window dolphindb


    【解决方案1】:

    在您的情况下,DolphinDB Orca API 具有相同的功能:

    odf = orca.DataFrame(df)
    odf.rolling('3s').sum()
    

    【讨论】: