Select and modify columns of a LazyFrame
Description
Add columns or modify existing ones with expressions. This is the
equivalent of dplyr::mutate()
as it keeps unmentioned
columns (unlike $select()
).
This will run all expression sequentially instead of in parallel. Use
this when the work per expression is cheap. Otherwise,
$with_columns()
should be
preferred.
Usage
<LazyFrame>$with_columns_seq(...)
Arguments
…
|
Any expressions or string column name, or same wrapped in a list. If first and only element is a list, it is unwrapped as a list of args. |
Value
A LazyFrame
Examples
library("polars")
as_polars_lf(iris)$with_columns_seq(
pl$col("Sepal.Length")$abs()$alias("abs_SL"),
(pl$col("Sepal.Length") + 2)$alias("add_2_SL")
)
#> polars LazyFrame
#> $explain(): Show the optimized query plan.
#>
#> Naive plan:
#> WITH_COLUMNS:
#> [col("Sepal.Length").abs().alias("abs_SL"), [(col("Sepal.Length")) + (2.0)].alias("add_2_SL")]
#> DF ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"]; PROJECT */5 COLUMNS; SELECTION: None
# same query
l_expr = list(
pl$col("Sepal.Length")$abs()$alias("abs_SL"),
(pl$col("Sepal.Length") + 2)$alias("add_2_SL")
)
as_polars_lf(iris)$with_columns_seq(l_expr)
#> polars LazyFrame
#> $explain(): Show the optimized query plan.
#>
#> Naive plan:
#> WITH_COLUMNS:
#> [col("Sepal.Length").abs().alias("abs_SL"), [(col("Sepal.Length")) + (2.0)].alias("add_2_SL")]
#> DF ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"]; PROJECT */5 COLUMNS; SELECTION: None
as_polars_lf(iris)$with_columns_seq(
pl$col("Sepal.Length")$abs(), # not named expr will keep name "Sepal.Length"
SW_add_2 = (pl$col("Sepal.Width") + 2)
)
#> polars LazyFrame
#> $explain(): Show the optimized query plan.
#>
#> Naive plan:
#> WITH_COLUMNS:
#> [col("Sepal.Length").abs(), [(col("Sepal.Width")) + (2.0)].alias("SW_add_2")]
#> DF ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"]; PROJECT */5 COLUMNS; SELECTION: None