2017-12-05 1 views
0

Ich versuche, das Äquivalent von postgreSQL'a WINDOW-Funktion in Pandas durchzuführen. Grundsätzlich möchte ich die Spaltenwerte in einer bestimmten Gruppe mitteln und eine neue Spalte mit den Ergebnissen erstellen, ohne die Zeilen in einer einzelnen Ausgabezeile zu gruppieren.Führen Sie die Gruppe nach dem Durchschnitt, ohne Zeilen in einer einzigen Ausgabezeile in Pandas gruppieren

Hier ist ein Beispiel:

data = pd.DataFrame(
'name': ['Steve', 'Jim', 'Anna', 'Susie', 'Greg', 'John', 'Sabrina'], 
'salary': [100, 200, 300, 100, 250, 90, 260], 
'department': ['Finance', 'Finance', 'HR', 'Finance', 'Operations', 'HR', 
'Operations'] 
}) 

Ich kann Gruppe durch und der Mittelwert der Gehälter mit

data.groupby('department').agg('mean') 

und dann links die Ergebnisse mit den ursprünglichen Daten zusammenführen.

Das Endergebnis sollte alle Zeilen und Spalten "Name", "Abteilung" und "Durchschnittsgehalt nach Abteilung" enthalten.

Ich frage mich, ob es eine schnellere und elegantere Möglichkeit gibt, dies zu tun.

Antwort

1

Klingt wie Sie transform

df['Mean']=df.groupby('department').transform('mean') 
df 
Out[656]: 
    department  name salary  Mean 
0  Finance Steve  100 133.333333 
1  Finance  Jim  200 133.333333 
2   HR  Anna  300 195.000000 
3  Finance Susie  100 133.333333 
4 Operations  Greg  250 255.000000 
5   HR  John  90 195.000000 
6 Operations Sabrina  260 255.000000 
+0

Große benötigen. Danke vielmals! – stevensallright

+0

@stevensallright yw ~ fröhliche Codierung – Wen

Verwandte Themen