我有一个如下所示的 CSV 文件(按 iy 对数据框进行排序后):
iy,u
1,80
1,90
1,70
1,50
1,60
2,20
2,30
2,35
2,15
2,25
我试图计算 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
其中 U 是 iy 相等时 u 的平均值,而 u' 只是 u-U,即波动。我知道 Pandas 中有一个名为 groupby.mean() 的函数,但我不想对数据框进行分组,只需取平均值,将值放在新列中,然后计算波动。
我该如何继续?
最佳答案
使用 groupby
与 transform
计算每个组的平均值并将该值分配给新列“U”,然后 Pandas 减去两列:
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")
关于python - 如何通过等指数提取均值和波动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62177214/