Pandas - 按一列分组并获得所有其他列的平均值

时间:2021-02-04 03:30:04

标签: pandas

我有一个带有列的数据框:

cols = ['A', 'B', 'C']

如果我对一列进行分组,例如“A”,如下所示:

df.groupby('A')['B'].mean()

它有效。


但我需要对一列进行分组,然后获得所有其他列的平均值。我试过了:

df[cols].groupby('A').mean()

但我收到错误:

KeyError: 'A'

我错过了什么?

2 个答案:

答案 0 :(得分:1)

请尝试:

df.groupby('A').agg('mean')

样本数据

   B  C  A
0  1  4  K
1  2  6  S
2  4  7  K
3  6  3  K
4  2  1  S
5  7  3  K
6  8  9  K
7  9  3  K


print(df.groupby('A').agg('mean'))




     B         C
A                    
K  5.833333  4.833333
S  2.000000  3.500000

答案 1 :(得分:0)

您可以使用 df.groupby('col').mean()。例如计算列 mean'A''B''C'

   A    B  C  D
0  1  NaN  1  1
1  1  2.0  2  1
2  2  3.0  1  1
3  1  4.0  1  1
4  2  5.0  2  1

df[['A', 'B', 'C']].groupby('A').mean()

df.groupby('A')[['A', 'B', 'C']].mean()

输出:

     B         C
A
1  3.0  1.333333
2  4.0  1.500000

如果您需要所有列的均值:

df.groupby('A').mean()

输出:

     B         C    D
A
1  3.0  1.333333  1.0
2  4.0  1.500000  1.0