2017-03-20 6 views
2

ich Pandas haben DatenrahmenHinzufügen einer Zeile zur Pandas Datenrahmen mit Säule mittelt

df = pd.DataFrame([[0,1,10,15],[1,5,7,10],[10,15,0,0]], columns=['Apple','Orange','Banana','Pear'], index=['basket1','basket2','basket3']) 

Ich brauche einen Datenrahmen zu erzeugen, die

Fruit Apple Orange Banana Pear mean_basket 

basket1 0  1  10  15  6.5 

basket2 1  5  7  10  5.75 

basket3 10  15  0  0  6.25 

mean_fruit 3.66  7  5.66 8.33 6.16 

wie

aussieht ich df['mean_basket'] = df.mean(axis=1) tat und erzeugt die letzte Spalte. Durch df.mean (Achse = 0), bekomme ich den Mittelwert jeder Spalte, aber ich weiß nicht, wie Sie es als eine neue Zeile in den Datenrahmen hinzufügen. Bitte helfen Sie.

Antwort

3
df = pd.DataFrame([[0,1,10,15],[1,5,7,10],[10,15,0,0]], columns=['Apple','Orange','Banana','Pear'], index=['basket1','basket2','basket3']) 
df['mean_basket'] = df.mean(axis=1) 
df.loc['mean_fruit'] = df.mean() 
df 
1
df.append(df.mean().rename('mean_fruit')).assign(mean_basket=lambda df: df.mean(1)) 

       Apple Orange  Banana  Pear mean_basket 
basket1  0.000000  1.0 10.000000 15.000000  6.500000 
basket2  1.000000  5.0 7.000000 10.000000  5.750000 
basket3  10.000000 15.0 0.000000 0.000000  6.250000 
mean_fruit 3.666667  7.0 5.666667 8.333333  6.166667 

Oder pipe

df.assign(
    mean_basket=df.mean(1) 
).pipe(lambda df: df.append(df.mean().rename('mean_fruit'))) 

       Apple Orange  Banana  Pear mean_basket 
basket1  0.000000  1.0 10.000000 15.000000  6.500000 
basket2  1.000000  5.0 7.000000 10.000000  5.750000 
basket3  10.000000 15.0 0.000000 0.000000  6.250000 
mean_fruit 3.666667  7.0 5.666667 8.333333  6.166667 

+1

Nizza, piRSquared verwenden. Ich mag den One-Liner mit Pfeife. –

Verwandte Themen