maxframe.dataframe.groupby.GroupBy.rolling#

GroupBy.rolling(window, min_periods=None, *, center=False, win_type=None, on=None, axis=0, closed=None, shift=0, order_cols=None, ascending=True) RollingGroupby#

返回一个滚动分组器,为每个分组提供滚动功能。

参数:
  • window (int, timedelta, str, offset, or BaseIndexer subclass) -- 移动窗口的大小。如果为整数,则为每个窗口使用的固定观测数量。如果为 timedelta、str 或 offset,则为每个窗口的时间周期。每个窗口的大小将根据时间周期内包含的观测值而变化。这仅对类似日期时间的索引有效。如需了解更多关于偏移量和频率字符串的信息,请参见 此链接。如果为 BaseIndexer 子类,则窗口边界基于定义的 get_window_bounds 方法。其他滚动关键字参数,如 min_periodscenterclosedstep 将传递给 get_window_bounds

  • min_periods (int, default None) -- 窗口中需要包含的最小观测数以产生值;否则结果为 np.nan。对于由偏移量指定的窗口,min_periods 默认为 1。对于由整数指定的窗口,min_periods 默认为窗口的大小。

  • center (bool, default False) -- 如果为 False,则将窗口标签设置为窗口索引的右边缘。如果为 True,则将窗口标签设置为窗口索引的中心。

  • win_type (str, default None) -- 如果为 None,则所有点的权重相等。如果为字符串,则必须是有效的 scipy.signal 窗口函数。某些 Scipy 窗口类型在聚合函数中需要传递额外参数。这些额外参数必须匹配 Scipy 窗口类型方法签名中指定的关键字。

  • on (str, optional) -- 对于 DataFrame,指定用于计算滚动窗口的列标签或索引级别,而不是 DataFrame 的索引。由于整数索引不用于计算滚动窗口,提供的整数列将被忽略并从结果中排除。

  • axis (int or str, default 0) -- 如果为 0'index',则在行上滚动。如果为 1'columns',则在列上滚动。对于 Series,此参数未使用,默认为 0。

  • closed (str, default None) -- 如果为 'right',则窗口中的第一个点不参与计算。如果为 'left',则窗口中的最后一个点不参与计算。如果为 'both',则窗口中的所有点都参与计算。如果为 'neither',则窗口中的第一个和最后一个点都不参与计算。默认为 None``(即 ``'right')。

  • shift (int, default 0) -- 如果指定,则在计算窗口函数之前,窗口将按 shift 行进行偏移(或者数据将按 -shift 行进行偏移)。

返回:

返回一个附加了 rolling 操作的新 grouper。

返回类型:

maxframe.dataframe.groupby.RollingGroupby

参见

Series.rolling

使用 Series 数据调用对象。

DataFrame.rolling

使用 DataFrame 调用对象。

Series.groupby

对 Series 应用 groupby 函数。

DataFrame.groupby

应用 groupby 函数。

示例

>>> import maxframe.dataframe as md
>>> df = md.DataFrame({'A': [1, 1, 2, 2],
...                    'B': [1, 2, 3, 4],
...                    'C': [0.362, 0.227, 1.267, -0.562]})
>>> df.execute()
      A  B      C
0     1  1  0.362
1     1  2  0.227
2     2  3  1.267
3     2  4 -0.562
>>> df.groupby('A').rolling(2).sum().execute()
    B      C
A
1 0  NaN    NaN
  1  3.0  0.589
2 2  NaN    NaN
  3  7.0  0.705
>>> df.groupby('A').rolling(2, min_periods=1).sum().execute()
    B      C
A
1 0  1.0  0.362
  1  3.0  0.589
2 2  3.0  1.267
  3  7.0  0.705
>>> df.groupby('A').rolling(2, on='B').sum().execute()
    B      C
A
1 0  1    NaN
  1  2  0.589
2 2  3    NaN
  3  4  0.705