在python中获取变量的平均值

在python中获取变量的平均值,python,pandas,Python,Pandas,我在python中对我的数据运行.mean(),但这只返回我分组的键和所需列的平均值。我想要所有列,用平均值替换原始值。 我尝试了很多事情,但似乎都没有成功。下面是我用来生成方法的代码 dd1=df.groupby(['key']).agg({'sales':"mean"}).reset_index() 你想要。。。不是 现在transform dd1 = df.groupby('key').transform('mean') print(dd1) C0

我在python中对我的数据运行.mean(),但这只返回我分组的键和所需列的平均值。我想要所有列,用平均值替换原始值。 我尝试了很多事情,但似乎都没有成功。下面是我用来生成方法的代码

dd1=df.groupby(['key']).agg({'sales':"mean"}).reset_index()
你想要。。。不是


现在
transform

dd1 = df.groupby('key').transform('mean')
print(dd1)

         C0        C1        C2        C3
0 -0.370642  0.066648 -0.299192 -0.148313
1 -0.370642  0.066648 -0.299192 -0.148313
2 -0.370642  0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642  0.066648 -0.299192 -0.148313
6 -0.370642  0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962

您可以通过以下方式将此限制为几列:

cols = ['C0', 'C1', 'C2', 'C3']
dd1 = df.groupby('key')[cols].transform('mean')
print(dd1)

         C0        C1        C2        C3
0 -0.370642  0.066648 -0.299192 -0.148313
1 -0.370642  0.066648 -0.299192 -0.148313
2 -0.370642  0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642  0.066648 -0.299192 -0.148313
6 -0.370642  0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962
你想要。。。不是


现在
transform

dd1 = df.groupby('key').transform('mean')
print(dd1)

         C0        C1        C2        C3
0 -0.370642  0.066648 -0.299192 -0.148313
1 -0.370642  0.066648 -0.299192 -0.148313
2 -0.370642  0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642  0.066648 -0.299192 -0.148313
6 -0.370642  0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962

您可以通过以下方式将此限制为几列:

cols = ['C0', 'C1', 'C2', 'C3']
dd1 = df.groupby('key')[cols].transform('mean')
print(dd1)

         C0        C1        C2        C3
0 -0.370642  0.066648 -0.299192 -0.148313
1 -0.370642  0.066648 -0.299192 -0.148313
2 -0.370642  0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642  0.066648 -0.299192 -0.148313
6 -0.370642  0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962

请举例说明您的数据。列是什么,列中的数据是什么,您希望得到什么结果。为什么要替换原始值?只需将
.mean()
应用于数据帧,您就应该在那里。请给出一个数据示例。列是什么,列中的数据是什么,您希望得到什么结果。为什么要替换原始值?只要将
.mean()
应用到数据帧,您就应该在那里了。谢谢,这看起来不错。但是有没有一种方法可以只得到几个变量的平均值,而不是所有变量的平均值?我的dataframe也有一组分类变量我正在运行python 2.6.6,这给了我以下错误-ValueError:无法将输入数组从形状(4)广播到形状(15,11)。这是因为python版本问题吗?@AkshatAgrawal可能是。。。我不确定。至于将其限制为几列,请参阅更新的帖子。@AkshatAgrawal如果解决了您的问题,请不要忘记接受答案。谢谢,这看起来不错。但是有没有一种方法可以只得到几个变量的平均值,而不是所有变量的平均值?我的dataframe也有一组分类变量我正在运行python 2.6.6,这给了我以下错误-ValueError:无法将输入数组从形状(4)广播到形状(15,11)。这是因为python版本问题吗?@AkshatAgrawal可能是。。。我不确定。至于将其限制为几列,请参阅更新的帖子。@AkshatAgrawal如果解决了您的问题,请不要忘记接受答案