2016-07-25 18 views
0

Ich habe einen Pandas Datenrahmen. Ich möchte einen weiteren Datenrahmen erstellen, wobei die Spalten die Summe ausgewählter Spalten aus dem ersten Bild sind.Pandas Datenrahmen von Summen aus einem anderen Datenrahmen

Zum Beispiel im ersten Datenframe habe ich Spalten 'A', 'B', 'C' und 'D' benannt. Neue Spalten sind 'X' und 'Y' und 'X' muss die Summe von 'A', 'B' und 'C' sein und 'Y' enthält nur 'D'. "Mapping" kann im Wörterbuch gespeichert werden: {'X': ['A', 'B', 'C'], Y: ['D']}, muss aber nicht unbedingt sein.

Soll ich den leeren Datenrahmen mit den Schlüsseln 'X' und 'Y' initialisieren und dann Spalten hinzufügen oder gibt es einen schnelleren Weg?

Antwort

2

Sie können einfach direkt die Datenrahmen mit den Daten initialisieren schon drin:

df2 = pd.DataFrame({'X': df[['A', 'B', 'C']].sum(axis=1), 'Y': df['D']}) 

Oder Sie können es Spalte für Spalte bauen:

df2 = df[['A', 'B', 'C']].sum(axis=1).to_frame(name='X') 
df2['Y'] = df['D'] 

Für die erste Spalte, die Sie benötigen Rufen Sie to_frame mit name als Ihren gewünschten Spaltennamen auf. Andernfalls wird df2 eine Serie anstelle eines DataFrames sein und Sie haben Probleme beim Hinzufügen von Spalten. Nach der ersten Spalte können Sie wie gewohnt Spalten zuweisen.

Probeneingabe:

df = pd.DataFrame({'A':[3,1,4],'B':[1,5,9],'C':[2,6,5],'D':[3,5,8]}) 

    A B C D 
0 3 1 2 3 
1 1 5 6 5 
2 4 9 5 8 

Beispielausgabe (bei beiden Verfahren):

X Y 
0 6 3 
1 12 5 
2 18 8 
Verwandte Themen