Given a polars
dataframe I want to rename all columns to their lowercase version. As per polars.Expr.name.to_lowercase we can do
import polars as pl
pl.DataFrame([{'CCY': 'EUR', 'Qty': 123},
{'CCY': 'USD', 'Qty': 456}]).with_columns(pl.all().name.to_lowercase())
but this duplicates the data (as it keeps the original column names).
Conceptually, I am looking for something like
pl.DataFrame(...).rename({c: c.name.to_lowercase() for c in pl.all()})
But this doesn't work since pl.all()
is not iterable.
select
rather than with_columns
:
df.select(pl.all().name.to_lowercase())
Output:
┌─────┬─────┐
│ ccy ┆ qty │
│ --- ┆ --- │
│ str ┆ i64 │
╞═════╪═════╡
│ EUR ┆ 123 │
│ USD ┆ 456 │
└─────┴─────┘
Note that you could also use your envisioned approach with cs.expand_selector
:
import polars.selectors as cs
df.rename({c: c.lower() for c in cs.expand_selector(df, cs.all())})
although in the case of all columns could be replaced by a simple:
df.rename(str.lower)