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_periods、center、closed和step将传递给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