For example you can make your own order of pl.Categorical
data using pl.StringCache
.
df = pl.DataFrame({
"currency": ["EUR","EUR","EUR","USD","USD","USD","USD"],
"alphabet": ["A","B","C","A","B","C","A"]
})
with pl.StringCache():
currency = sorted(["EUR", "USD"], reverse=True)
pl.Series(["C", "A", "B", *currency]).cast(pl.Categorical)
df = df.with_columns(
pl.col(pl.Utf8).cast(pl.Categorical),
).sort(
pl.col(pl.Categorical).to_physical()
)
print(df)
┌──────────┬──────────┐
│ currency ┆ alphabet │
│ --- ┆ --- │
│ cat ┆ cat │
╞══════════╪══════════╡
│ USD ┆ C │
│ USD ┆ A │
│ USD ┆ A │
│ USD ┆ B │
│ EUR ┆ C │
│ EUR ┆ A │
│ EUR ┆ B │
└──────────┴──────────┘