使用列平均值向pandas数据框添加一行

时间:2017-03-20 19:12:12

标签: python pandas

我有一个pandas数据帧

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

我需要生成一个看起来像

的数据框
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

我做了df['mean_basket'] = df.mean(axis=1)并生成了最后一列。 通过df.mean(axis = 0),我得到每列的平均值,但我不知道如何将它作为新行添加到数据帧。请帮忙。

2 个答案:

答案 0 :(得分: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 :(得分: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

或使用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