Skip to content

Run any polars expression on the sub-lists’ values

Source code

Description

Run any polars expression on the sub-lists’ values

Usage

<Expr>$list$eval(expr)

Arguments

expr Expression to run. Note that you can select an element with pl$element(), pl$first(), and more. See Examples.

Value

A polars expression

Examples

library("polars")

df <- pl$DataFrame(
  a = list(c(1, 8, 3), c(3, 2), c(NA, NA, 1)),
  b = list(c("R", "is", "amazing"), c("foo", "bar"), "text")
)

df
#> shape: (3, 2)
#> ┌───────────────────┬────────────────────────┐
#> │ a                 ┆ b                      │
#> │ ---               ┆ ---                    │
#> │ list[f64]         ┆ list[str]              │
#> ╞═══════════════════╪════════════════════════╡
#> │ [1.0, 8.0, 3.0]   ┆ ["R", "is", "amazing"] │
#> │ [3.0, 2.0]        ┆ ["foo", "bar"]         │
#> │ [null, null, 1.0] ┆ ["text"]               │
#> └───────────────────┴────────────────────────┘
# standardize each value inside a list, using only the values in this list
df$select(
  a_stand = pl$col("a")$list$eval(
    (pl$element() - pl$element()$mean()) / pl$element()$std()
  )
)
#> shape: (3, 1)
#> ┌──────────────────────────────┐
#> │ a_stand                      │
#> │ ---                          │
#> │ list[f64]                    │
#> ╞══════════════════════════════╡
#> │ [-0.83205, 1.1094, -0.27735] │
#> │ [0.707107, -0.707107]        │
#> │ [null, null, null]           │
#> └──────────────────────────────┘
# count characters for each element in list. Since column "b" is list[str],
# we can apply all `$str` functions on elements in the list:
df$select(
  b_len_chars = pl$col("b")$list$eval(
    pl$element()$str$len_chars()
  )
)
#> shape: (3, 1)
#> ┌─────────────┐
#> │ b_len_chars │
#> │ ---         │
#> │ list[u32]   │
#> ╞═════════════╡
#> │ [1, 2, 7]   │
#> │ [3, 3]      │
#> │ [4]         │
#> └─────────────┘
# concat strings in each list
df$select(
  pl$col("b")$list$eval(pl$element()$str$join(" "))$list$first()
)
#> shape: (3, 1)
#> ┌──────────────┐
#> │ b            │
#> │ ---          │
#> │ str          │
#> ╞══════════════╡
#> │ R is amazing │
#> │ foo bar      │
#> │ text         │
#> └──────────────┘