2

我有一个数据框,有列:

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

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

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

有用。


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

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

但我得到了错误:

KeyError: 'A'

我错过了什么?

4

2 回答 2

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
于 2021-02-04T03:33:17.073 回答
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
于 2021-02-04T07:31:05.160 回答