我需要用零替换value
a 列中的最后两个值pl.DataFrame
,从而我需要group_by
该symbol
列。
import polars as pl
df = pl.DataFrame(
{"symbol": [*["A"] * 4, *["B"] * 4], "value": range(8)}
)
shape: (8, 2)
┌────────┬───────┐
│ symbol ┆ value │
│ --- ┆ --- │
│ str ┆ i64 │
╞════════╪═══════╡
│ A ┆ 0 │
│ A ┆ 1 │
│ A ┆ 2 │
│ A ┆ 3 │
│ B ┆ 4 │
│ B ┆ 5 │
│ B ┆ 6 │
│ B ┆ 7 │
└────────┴───────┘
这是我的预期结果:
shape: (8, 2)
┌────────┬───────┐
│ symbol ┆ value │
│ --- ┆ --- │
│ str ┆ i64 │
╞════════╪═══════╡
│ A ┆ 0 │
│ A ┆ 1 │
│ A ┆ 0 │<-- replaced
│ A ┆ 0 │<-- replaced
│ B ┆ 4 │
│ B ┆ 5 │
│ B ┆ 0 │<-- replaced
│ B ┆ 0 │<-- replaced
└────────┴───────┘
您可以使用
pl.Expr.head()
用于pl.len()
获取不包含最后两行的数据。pl.Expr.append()
并pl.repeat()
用零填充。或者,你可以使用
pl.when()
创建条件列。pl.int_range()
仅影响pl.len()
第一n - 2
行。您可以使用
.is_last_distinct()
和.shift()