我有一个带有列的数据框:
cols = ['A', 'B', 'C']
如果我对一列进行分组,例如“A”,如下所示:
df.groupby('A')['B'].mean()
它有效。
但我需要对一列进行分组,然后获得所有其他列的平均值。我试过了:
df[cols].groupby('A').mean()
但我收到错误:
KeyError: 'A'
我错过了什么?
答案 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