Summe der Polarenspalte basierend auf anderen Spaltenwerten in „group_by“.Python

Python-Programme
Anonymous
 Summe der Polarenspalte basierend auf anderen Spaltenwerten in „group_by“.

Post by Anonymous »

Ich möchte die Summe einer Spalte in einem group_by basierend auf den Werten einer anderen Spalte berechnen. So ziemlich das, was pl.Expr.value_counts macht (siehe Beispiel), aber ich möchte eine Funktion (z. B. sum) auf eine bestimmte Spalte anwenden, in diesem Fall die Spalte Price.
Ich weiß, dass ich group_by für Weather + Windy ausführen und dann aggregieren könnte, aber das kann ich nicht, da ich viele andere Aggregationen habe Ich muss nur auf der Wetter-Gruppe_by rechnen.

Code: Select all

import polars as pl
df = pl.DataFrame(
data = {
"Weather":["Rain","Sun","Rain","Sun","Rain","Sun","Rain","Sun"],
"Price":[1,2,3,4,5,6,7,8],
"Windy":["Y","Y","Y","Y","N","N","N","N"]
}
)
Ich kann die Anzahl der Zählungen pro windigem Tag durch value_counts ermitteln

Code: Select all

df_agg = (df
.group_by("Weather")
.agg(
pl.col("Windy")
.value_counts()
.alias("Price")
)
)

Code: Select all

shape: (2, 2)
┌─────────┬────────────────────┐
│ Weather ┆ Price              │
│ ---     ┆ ---                │
│ str     ┆ list[struct[2]]    │
╞═════════╪════════════════════╡
│ Sun     ┆ [{"Y",2}, {"N",2}] │
│ Rain    ┆ [{"Y",2}, {"N",2}] │
└─────────┴────────────────────┘
Ich würde gerne so etwas machen:

Code: Select all

df_agg =(df
.group_by("Weather")
.agg(
pl.col("Windy")
.custom_fun_on_other_col("Price",sum)
.alias("Price")
)
)
und das ist das Ergebnis, das ich will,

Code: Select all

shape: (2, 2)
┌─────────┬────────────────────┐
│ Weather ┆ Price              │
│ ---     ┆ ---                │
│ str     ┆ list[struct[2]]    │
╞═════════╪════════════════════╡
│ Sun     ┆ [{"Y",6},{"N",14}] │
│ Rain    ┆ [{"Y",4},{"N",12}] │
└─────────┴────────────────────┘

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post