Wurde versucht, eine Pivot-Tabelle mit mehreren Spalten "Werte" zu generieren. Ich weiß, dass ich Aggfunc verwenden kann, um Werte zu aggregieren, wie ich will, aber was ist, wenn ich nicht beide Spalten zusammenfassen möchte, sondern stattdessen die Summe einer Spalte und die der anderen Spalte benötige. Also ist es möglich, dies mit Pandas zu tun?Definieren Sie Aggfunc für jede Spalte Werte in Pandas Pivot-Tabelle
df = pd.DataFrame({
'A' : ['one', 'one', 'two', 'three'] * 6,
'B' : ['A', 'B', 'C'] * 8,
'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
'D' : np.random.randn(24),
'E' : np.random.randn(24)
})
Nun wird dies eine Pivot-Tabelle mit Summe erhalten:
pd.pivot_table(df, values=['D','E'], rows=['B'], aggfunc=np.sum)
Und dieses für Mittel:
pd.pivot_table(df, values=['D','E'], rows=['B'], aggfunc=np.mean)
Wie kann ich Summe für D
und bedeuten für E
bekommen?
Hope meine Frage ist klar genug.
Danke, beide Möglichkeiten würden funktionieren. Aber was ich mir erhofft hatte, war ein einzelner Schritt. Wie Sie gesagt haben, können Sie für jede einzelne Spalte Funktionen definieren. Ich werde warten, wenn irgendjemand anderes von einer solchen Art weiß, sonst werde ich Ihre als eine Antwort in einer Weile akzeptieren. –
@VIKASHJAISWAL siehe dritte Methode, ich denke, das ist, was Sie brauchen –
Excellent. Genau das, was ich gesucht habe, funktioniert in der Tat auch für die Gruppierung mit mehreren Spalten, df.groupby (['B', 'C']). Aggregate ({'D': np.sum, 'E': np. bedeuten}). Danke für Ihre Bemühungen. –