pandas.core.groupby.DataFrameGroupBy.rolling#

DataFrameGroupBy.rolling(*args, **kwargs)[源代码]#

返回一个滚动观察员,为每个组提供滚动功能。

Parameters:
windowint, timedelta, str, offset, or BaseIndexer subclass

移动窗口的大小.

如果为整数,则为每个窗口使用的固定观测次数.

如果为 timedelta、str 或 offset,则为每个窗口的时间段. 每个窗口的大小将根据时间段内包含的观测值而变化. 这仅对日期时间类索引有效. 要了解更多关于 offset 和频率字符串的信息,请查看 this link

如果为 BaseIndexer 子类,则窗口边界基于定义的 get_window_bounds 方法. 其他滚动关键字参数,即 min_periodscenterclosedstep 将传递给 get_window_bounds.

min_periodsint,默认 None

窗口中必须存在的最小观测值数量;否则,结果为 np.nan

对于由 offset 指定的窗口,min_periods 默认为 1.

对于由整数指定的窗口,min_periods 默认为窗口大小.

centerbool,默认 False

如果为 False,则将窗口标签设置为窗口右边缘.

如果为 True,则将窗口标签设置为窗口中心.

win_typestr,默认 None

如果为 None,则所有点都均匀加权.

如果为字符串,则必须是有效的 scipy.signal window function

某些 Scipy 窗口类型需要在聚合函数中传递其他参数. 其他参数必须与 Scipy 窗口类型方法签名中指定的关键字匹配.

onbool, default False

对于 DataFrame,在其中计算滚动窗口的列标签或索引级别,而不是 DataFrame 的索引.

由于未将整数索引用于计算滚动窗口,因此提供的整数列将被忽略并从结果中排除.

axisint 或 str,默认为 0

如果为 0'index',则在行上滚动。

如果为 1'columns',则在列上滚动。

对于 Series,此参数未使用,默认为 0。

closedstr,默认 None

如果为 'right',则从计算中排除窗口中的第一个点.

如果为 'left',则从计算中排除窗口中的最后一个点.

如果为 'both',则窗口中的所有点都包含在计算中。

如果为 'neither',则从计算中排除窗口中的第一个和最后一个点.

默认为 None ('right').

<strong>method</strong>str {‘single’, ‘table’},默认为 ‘single’

按单列或单行('single')执行滚动操作,或对整个对象('table')执行滚动操作。

此参数仅在方法调用中指定 engine='numba' 时实现。

Returns:
pandas.api.typing.RollingGroupby

返回一个带有滚动附加的新观察员。

参见

Series.rolling

使用 Series 数据调用对象。

DataFrame.rolling

使用 DataFrames 调用对象。

Series.groupby

将函数 groupby 应用于 Series。

DataFrame.groupby

应用一个函数分组。

Examples

>>> df = pd.DataFrame({'A': [1, 1, 2, 2],
...                    'B': [1, 2, 3, 4],
...                    'C': [0.362, 0.227, 1.267, -0.562]})
>>> df
      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()
    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()
    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()
    B      C
A
1 0  1    NaN
  1  2  0.589
2 2  3    NaN
  3  4  0.705