Python多列和行的平均值

时间:2018-01-26 01:43:37

标签: python pandas

如何在数据框中按两列分组,并指定我想要整体平均值的其他列?

数据

name     team   a   b   c   d 
Bob      blue   2   4   3   5
Bob      blue   2   4   3   4
Bob      blue   1   5   3   4
Bob      green  1   3   2   5
Bob      green  1   2   1   1
Bob      green  1   2   1   4
Bob      green  5   2   2   1
Jane     red    1   2   2   3
Jane     red    3   3   3   4
Jane     red    2   5   1   2
Jane     red    4   5   5   3

所需输出

name    team    avg
Bob     blue    3.333333333
Bob     green   2.125
Jane    red     3

2 个答案:

答案 0 :(得分:3)

你可以mean两次:-)

df.groupby(['name','team']).mean().mean(1)
Out[1263]: 
name  team 
Bob   blue     3.333333
      green    2.125000
Jane  red      3.000000
dtype: float64

答案 1 :(得分:2)

您需要将索引设置为分组列并堆叠其余列:

df.set_index(['name', 'team']).stack().groupby(level=[0, 1]).mean()
Out: 
name  team 
Bob   blue     3.333333
      green    2.125000
Jane  red      3.000000
dtype: float64