我有一个数据框,有列:
cols = ['A', 'B', 'C']
如果我按一列分组,例如“A”,如下所示:
df.groupby('A')['B'].mean()
有用。
但我需要按一列分组,然后得到所有其他列的平均值。我试过了:
df[cols].groupby('A').mean()
但我得到了错误:
KeyError: 'A'
我错过了什么?
我有一个数据框,有列:
cols = ['A', 'B', 'C']
如果我按一列分组,例如“A”,如下所示:
df.groupby('A')['B'].mean()
有用。
但我需要按一列分组,然后得到所有其他列的平均值。我试过了:
df[cols].groupby('A').mean()
但我得到了错误:
KeyError: 'A'
我错过了什么?
请试试:
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
您可以使用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