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

Pandas-按一列分组并获取所有其他列的平均值,pandas,Pandas,我有一个dataframe,包含列: 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

我有一个dataframe,包含列:

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()
。例如,要计算
'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()

输出:

     B         C
A
1  3.0  1.333333
2  4.0  1.500000
     B         C    D
A
1  3.0  1.333333  1.0
2  4.0  1.500000  1.0
如果您需要所有列的平均值:

df.groupby('A').mean()
输出:

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

ValueError:传递的项目数错误25,位置意味着1(实际上有25列)应该可以工作。除非你想做点别的。有助于提供示例数据集使用示例数据集Hanks查看我的编辑。但是
df[cols].groupby('A').mean()
sholud也可以,对吧?绝对可以。这对我也有好处。只是喜欢较短的代码,我无法复制。我猜
KeyError
来自
df[cols]
,而不是
groupby(“A”)
。您能再检查一遍吗?您的数据框中没有列“A”。