python - 如何通过等指数提取均值和波动?

标签 python pandas

我有一个如下所示的 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() 的函数,但我不想对数据框进行分组,只需取平均值,将值放在新列中,然后计算波动。

我该如何继续?

最佳答案

使用 groupbytransform计算每个组的平均值并将该值分配给新列“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/

相关文章:

python - 在Python中将小于某个阈值的相对频率标记为异常值

python - Pandas 损益汇总至下一个工作日

python - incr 如何处理过期时间?

python - 带有嵌套列表到 Dataframe 的字典

python - ValueError : Invalid property specified for object of type plotly. graph_objs.Pie: 'xaxis'

python - 使用 matplotlib 和 boto 将绘图从内存上传到 s3

python - Pandas:将日期间隔转换并合并到面板中的虚拟变量中

python - 计算 Pandas 组中的平均时间差 Python

python - 如果出现异常

python - 无法以所需方式从网页中获取两个字段