polars.Expr.rolling_max#
- Expr.rolling_max(
- window_size: int,
- weights: list[float] | None = None,
- *,
- min_periods: int | None = None,
- center: bool = False,
对此数组中的值应用滚动最大值(移动最大值)。
警告
此功能被视为不稳定。它可能会在任何时候更改,而不被视为破坏性更改。
一个长度为
window_size的窗口将遍历数组。填充此窗口的值将(可选地)与由weights向量给出的权重相乘。结果值将聚合为其最大值。给定行的窗口将包括该行本身及其前面的
window_size - 1个元素。- Parameters:
- window_size
窗口的长度以元素数量表示。
- weights
一个与窗口长度相同的可选切片,它将与窗口中的值进行元素级乘法。
- min_periods
在计算结果之前,窗口中应该为非空值的数量。如果设置为
None(默认值),它将被设置为等于window_size。- center
将标签设置在窗口的中心。
注释
如果你想在同一个动态窗口上计算多个聚合统计量,考虑使用
rolling- 这个方法可以缓存窗口大小的计算。示例
>>> df = pl.DataFrame({"A": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]}) >>> df.with_columns( ... rolling_max=pl.col("A").rolling_max(window_size=2), ... ) shape: (6, 2) ┌─────┬─────────────┐ │ A ┆ rolling_max │ │ --- ┆ --- │ │ f64 ┆ f64 │ ╞═════╪═════════════╡ │ 1.0 ┆ null │ │ 2.0 ┆ 2.0 │ │ 3.0 ┆ 3.0 │ │ 4.0 ┆ 4.0 │ │ 5.0 ┆ 5.0 │ │ 6.0 ┆ 6.0 │ └─────┴─────────────┘
指定权重以与窗口中的值相乘:
>>> df.with_columns( ... rolling_max=pl.col("A").rolling_max( ... window_size=2, weights=[0.25, 0.75] ... ), ... ) shape: (6, 2) ┌─────┬─────────────┐ │ A ┆ rolling_max │ │ --- ┆ --- │ │ f64 ┆ f64 │ ╞═════╪═════════════╡ │ 1.0 ┆ null │ │ 2.0 ┆ 1.5 │ │ 3.0 ┆ 2.25 │ │ 4.0 ┆ 3.0 │ │ 5.0 ┆ 3.75 │ │ 6.0 ┆ 4.5 │ └─────┴─────────────┘
将窗口中的值居中
>>> df.with_columns( ... rolling_max=pl.col("A").rolling_max(window_size=3, center=True), ... ) shape: (6, 2) ┌─────┬─────────────┐ │ A ┆ rolling_max │ │ --- ┆ --- │ │ f64 ┆ f64 │ ╞═════╪═════════════╡ │ 1.0 ┆ null │ │ 2.0 ┆ 3.0 │ │ 3.0 ┆ 4.0 │ │ 4.0 ┆ 5.0 │ │ 5.0 ┆ 6.0 │ │ 6.0 ┆ null │ └─────┴─────────────┘