pandas.core.groupby.DataFrameGroupBy.rolling#
- DataFrameGroupBy.rolling(window, min_periods=None, center=False, win_type=None, on=None, closed=None, method='single')[源代码]#
返回一个滚动分组器,为每个组提供滚动功能。
- 参数:
- 窗口int, timedelta, str, offset, 或 BaseIndexer 子类
移动窗口的大小。
如果是整数,则为每个窗口使用的固定观测数。
如果是 timedelta、str 或 offset,每个窗口的时间周期。每个窗口的大小将根据时间周期内包含的观测值而变化。这仅对类日期时间索引有效。要了解更多关于偏移量和频率字符串的信息,请参见 此链接。
如果是一个 BaseIndexer 子类,窗口边界将基于定义的
get_window_bounds
方法。额外的滚动关键字参数,即min_periods
、center
、closed
和step
将被传递给get_window_bounds
。- min_periodsint, 默认 None
窗口中所需的最小观测数以获得一个值;否则,结果为
np.nan
。对于由偏移量指定的窗口,
min_periods
将默认为 1。对于由整数指定的窗口,
min_periods
将默认为窗口的大小。- 中心bool, 默认为 False
如果为 False,将窗口标签设置为窗口索引的右边缘。
如果为真,将窗口标签设置为窗口索引的中心。
- win_typestr, 默认为 None
如果
None
,所有点都是均匀加权的。如果是一个字符串,它必须是一个有效的 scipy.signal 窗口函数。
某些 Scipy 窗口类型需要在聚合函数中传递额外的参数。这些额外参数必须与 Scipy 窗口类型方法签名中指定的关键字匹配。
- 开str, 可选
对于一个 DataFrame,一个列标签或索引级别,用于计算滚动窗口,而不是 DataFrame 的索引。
提供的整数列被忽略并从结果中排除,因为整数索引不用于计算滚动窗口。
- closedstr, 默认为 None
如果
'right'
,窗口中的第一个点不包括在计算中。如果
'left'
,窗口中的最后一个点不包括在计算中。如果
'both'
,窗口中的点不会从计算中排除。如果
'neither'
,窗口中的第一个和最后一个点将不参与计算。默认
None
('right'
)。- 方法str {‘single’, ‘table’}, 默认 ‘single’
对每列或每行执行滚动操作 (
'single'
) 或对整个对象执行 ('table'
)。只有在方法调用中指定
engine='numba'
时,此参数才实现。
- 返回:
- pandas.api.typing.RollingGroupby
返回一个带有我们滚动追加的新分组。
参见
Series.rolling
使用 Series 数据调用对象。
DataFrame.rolling
使用 DataFrames 调用对象。
Series.groupby
对一个Series应用一个groupby函数。
DataFrame.groupby
应用一个函数 groupby。
例子
>>> 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