Preciso substituir os dois últimos valores na value
coluna a pl.DataFrame
por zeros, por isso preciso da group_by
coluna 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 │
└────────┴───────┘
Aqui está o meu resultado esperado:
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
└────────┴───────┘
Você pode usar
pl.Expr.head()
compl.len()
para obter dados sem as duas últimas linhas.pl.Expr.append()
epl.repeat()
preenchê-lo com zeros.Alternativamente, você pode usar
pl.when()
para criar uma coluna condicional.pl.int_range()
compl.len()
para afetar apenas as primeirasn - 2
linhas.Você pode usar
.is_last_distinct()
e.shift()