polars.DataFrame.melt#
- DataFrame.melt(
- id_vars: Sequence[str] | str | None = None,
- value_vars: Sequence[str] | str | None = None,
- variable_name: str | None = None,
- value_name: str | None = None,
Unpivot a DataFrame from wide to long format.
Optionally leaves 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 variable 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], ... } ... ) >>> df.melt(id_vars="a", value_vars=["b", "c"]) 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 │ └─────┴──────────┴───────┘