polars.Expr.rolling_max#

Expr.rolling_max(
window_size: int,
weights: list[float] | None = None,
*,
min_periods: int | None = None,
center: bool = False,
) Expr[source]#

对此数组中的值应用滚动最大值(移动最大值)。

警告

此功能被视为不稳定。它可能会在任何时候更改,而不被视为破坏性更改。

一个长度为 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        │
└─────┴─────────────┘