polars.LazyFrame.melt¶
- LazyFrame.melt(id_vars: Optional[Union[str, List[str]]] = None, value_vars: Optional[Union[str, List[str]]] = None, variable_name: Optional[str] = None, value_name: Optional[str] = None) polars.internals.lazy_frame.LDF ¶
Unpivot a DataFrame from wide to long format, optionally leaving identifiers set.
This function is useful to massage a DataFrame into a format where one or more columns are identifier variables (id_vars), while all other columns, considered measured variables (value_vars), are “unpivoted” to the row axis, leaving just two non-identifier columns, ‘variable’ and ‘value’.
- Parameters
- id_vars
Columns to use as identifier variables.
- value_vars
Values to use as identifier variables. If value_vars is empty all columns that are not in id_vars will be used.
- variable_name
Name to give to the value column. Defaults to “variable”
- value_name
Name to give to the value column. Defaults to “value”
Examples
>>> df = pl.DataFrame( ... { ... "a": ["x", "y", "z"], ... "b": [1, 3, 5], ... "c": [2, 4, 6], ... } ... ).lazy() >>> df.melt(id_vars="a", value_vars=["b", "c"]).collect() shape: (6, 3) ┌─────┬──────────┬───────┐ │ a ┆ variable ┆ value │ │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ i64 │ ╞═════╪══════════╪═══════╡ │ x ┆ b ┆ 1 │ ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ y ┆ b ┆ 3 │ ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ z ┆ b ┆ 5 │ ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ x ┆ c ┆ 2 │ ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ y ┆ c ┆ 4 │ ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ z ┆ c ┆ 6 │ └─────┴──────────┴───────┘