Nehmen Sie eindeutige Werte horizontal über polare Datenrahmenspalten hinweg [Duplikat]
Posted: 15 Jan 2025, 18:05
Ich habe diesen Datenrahmen:
Ich möchte eine dritte Spalte erstellen, die eine verkettete Liste der eindeutigen Werte über die Spalten ccy1 und ccy2 enthält. Etwas wie
was ergibt
Aber ich suche nach einer natürlicheren Polarisierung (d. h. vektorisiert). Jede Hilfe ist willkommen.
Code: Select all
import polars as pl
df = pl.from_repr("""shape: (4, 3)
┌──────┬──────┐
│ ccy1 ┆ ccy2 │
│ --- ┆ --- │
│ str ┆ str │
╞══════╪══════╡
│ USD ┆ USD │
│ EUR ┆ USD │
│ EUR ┆ EUR │
│ USD ┆ JPY │
└──────┴──────┘
""")
Code: Select all
df.with_columns(pl.struct('ccy1', 'ccy2')
.map_elements(lambda x: ','.join(sorted(set(x.values()))),
return_dtype=pl.String)
.alias('ccys'))
Code: Select all
shape: (4, 3)
┌──────┬──────┬─────────┐
│ ccy1 ┆ ccy2 ┆ ccys │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞══════╪══════╪═════════╡
│ USD ┆ USD ┆ USD │
│ EUR ┆ USD ┆ EUR,USD │
│ EUR ┆ EUR ┆ EUR │
│ USD ┆ JPY ┆ JPY,USD │
└──────┴──────┴─────────┘