3
df = pd.DataFrame({
'A': ['d','d','d','f','f','f','g','g','g','h','h','h'],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1],
'S': [2012,2013,2014,2015,2016,2012,2013,2014,2015,2016,2012,2013]
});
df = (df.B + df.C).groupby([df.A,df.S]).agg(['sum','size']).
unstack(fill_value=0)
df10 = (df.B * df.C).groupby([df.A,df.S]).agg(['sum','size']).
unstack(fill_value=0)
df20 = (df.B - df.C).groupby([df.A,df.S]).agg(['sum','size']).
unstack(fill_value=0)
Kann ich den folgenden Code auf einmal für df, df10, df20 ausführen? Übrigens, in den realen Daten werde ich 80 Datenrahmen mit demselben Code wie unten laufen lassen;Wäre es möglich, mehrere Datenrahmen auf einmal zu erstellen?
df1 = df.groupby(level=0, axis=1).sum()
new_cols= list(zip(df1.columns.get_level_values(0),['total'] * len(df.columns)))
df1.columns = pd.MultiIndex.from_tuples(new_cols)
df2 = pd.concat([df1,df], axis=1).sort_index(axis=1).sort_index(axis=1, level=1)
df2.columns = ['_'.join((col[0], str(col[1]))) for col in df2.columns]
Dank. Wäre es möglich, die Jahre als Spalten zu haben? Außerdem, wie würde ich den zusätzlichen Code ändern, um die Summen von Summe und Größe zurückzugeben? – Zanshin
'reset_index ('S')', um Jahre als Spalte zu erhalten. Weisen Sie das Ergebnis oben auf "df_" und dann auf "df_.append" (df_.sum(). rename (('Total', ''))) ' – piRSquared