Mehrere Aggregationen derselben Spalte mit Pandas GroupBy.agg()Python

Python-Programme
Anonymous
 Mehrere Aggregationen derselben Spalte mit Pandas GroupBy.agg()

Post by Anonymous »

Gibt es eine in Pandas integrierte Möglichkeit, zwei verschiedene Aggregationsfunktionen f1, f2 auf dieselbe Spalte df["returns"] anzuwenden, ohne agg() mehrmals aufrufen zu müssen?
Beispieldatenrahmen:

Code: Select all

import pandas as pd
import datetime as dt
import numpy as np

pd.np.random.seed(0)
df = pd.DataFrame({
"date"    :  [dt.date(2012, x, 1) for x in range(1, 11)],
"returns" :  0.05 * np.random.randn(10),
"dummy"   :  np.repeat(1, 10)
})
Der syntaktisch falsche, aber intuitiv richtige Weg wäre:

Code: Select all

# Assume `f1` and `f2` are defined for aggregating.
df.groupby("dummy").agg({"returns": f1, "returns": f2})
Offensichtlich erlaubt Python keine doppelten Schlüssel. Gibt es eine andere Möglichkeit, die Eingabe in agg() auszudrücken? Vielleicht würde eine Liste von Tupeln [(Spalte, Funktion)] besser funktionieren, um die Anwendung mehrerer Funktionen auf dieselbe Spalte zu ermöglichen? Aber agg() scheint nur ein Wörterbuch zu akzeptieren.
Gibt es dafür eine Problemumgehung außer der Definition einer Hilfsfunktion, die nur beide darin enthaltenen Funktionen anwendet? (Wie würde das überhaupt mit der Aggregation funktionieren?)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post