Python 如何用等指数提取均值和波动?

Python 如何用等指数提取均值和波动?,python,pandas,Python,Pandas,我有一个如下所示的CSV文件(按iy对数据帧进行排序后): 我试图计算iy相等时的平均值和波动。例如,对于上面的CSV,我想要的是如下内容: iy,u,U,u' 1,80,70,10 1,90,70,20 1,70,70,0 1,50,70,-20 1,60,70,-10 2,20,25,-5 2,30,25,5 2,35,25,10 2,15,25,-10 2,25,25,0 式中,当iy相等时,U是U的平均值,而U'只是U-U,波动。我知道pandas中有一个名为groupby.mean(

我有一个如下所示的CSV文件(按iy对数据帧进行排序后):

我试图计算iy相等时的平均值和波动。例如,对于上面的CSV,我想要的是如下内容:

iy,u,U,u'
1,80,70,10
1,90,70,20
1,70,70,0
1,50,70,-20
1,60,70,-10
2,20,25,-5
2,30,25,5
2,35,25,10
2,15,25,-10
2,25,25,0
式中,当iy相等时,U是U的平均值,而U'只是U-U,波动。我知道pandas中有一个名为groupby.mean()的函数,但我不想对数据帧进行分组,只需取平均值,将值放入新列中,然后计算波动


如何继续?

使用
groupby
transform
计算每组的平均值,并将该值分配给新列“U”,然后减去两列:

df['U'] = df.groupby('iy').transform('mean')
df["u'"] = df['u'] - df['U']
df
输出:

   iy   u   U  u'
0   1  80  70  10
1   1  90  70  20
2   1  70  70   0
3   1  50  70 -20
4   1  60  70 -10
5   2  20  25  -5
6   2  30  25   5
7   2  35  25  10
8   2  15  25 -10
9   2  25  25   0
你可以用一句话来想象:

df.assign(U=df.groupby('iy').transform('mean')).eval("u_prime = u-U")

您可以将数据传输到
Numpy
数组中,并使用
Numpy.where()
按不同的iy值切割表格,使用
Numpy.mean()
计算平均值。
df.assign(U=df.groupby('iy').transform('mean')).eval("u_prime = u-U")