Gruppen-by-Spalte in Polars DataFrame Inneren mit _columnsPython

Python-Programme
Anonymous
 Gruppen-by-Spalte in Polars DataFrame Inneren mit _columns

Post by Anonymous »

Ich habe den folgenden Datenrahmen: < /p>

Code: Select all

import polars as pl

df = pl.DataFrame({
'ID': [1, 1, 5, 5, 7, 7, 7],
'YEAR': [2025, 2025, 2023, 2024, 2020, 2021, 2021]
})
shape: (7, 2)
┌─────┬──────┐
│ ID  ┆ YEAR │
│ --- ┆ ---  │
│ i64 ┆ i64  │
╞═════╪══════╡
│ 1   ┆ 2025 │
│ 1   ┆ 2025 │
│ 5   ┆ 2023 │
│ 5   ┆ 2024 │
│ 7   ┆ 2020 │
│ 7   ┆ 2021 │
│ 7   ┆ 2021 │
└─────┴──────┘
< /code>
Jetzt möchte ich die eindeutige Anzahl von Jahren pro ID erhalten, d. H. < /p>
shape: (7, 3)
┌─────┬──────┬──────────────┐
│ ID  ┆ YEAR ┆ UNIQUE_YEARS │
│ --- ┆ ---  ┆ ---          │
│ i64 ┆ i64  ┆ u32          │
╞═════╪══════╪══════════════╡
│ 1   ┆ 2025 ┆ 1            │
│ 1   ┆ 2025 ┆ 1            │
│ 5   ┆ 2023 ┆ 2            │
│ 5   ┆ 2024 ┆ 2            │
│ 7   ┆ 2020 ┆ 2            │
│ 7   ┆ 2021 ┆ 2            │
│ 7   ┆ 2021 ┆ 2            │
└─────┴──────┴──────────────┘
Ich habe also df.with_columns (pl.col ('Jahr') ausprobiert. Over ('id'). alias ('einzigartig_years')) , aber dies gibt das falsche Ergebnis. Also habe ich < /p>
ausgedacht

Code: Select all

df.join(df.group_by('ID').agg(pl.col('YEAR').unique().len().alias('UNIQUE_YEARS')), on='ID', how='left')
< /code>
Was gibt ein korrektes Ergebnis! Aber es sieht ein bisschen klobig aus und ich frage mich, ob es einen natürlicheren Weg mit _columns 
und über ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post