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