gpt4 book ai didi

python - 如何计算 Pandas 自定义权重的移动平均值?

转载 作者:行者123 更新时间:2023-12-01 09:06:25 24 4
gpt4 key购买 nike

我有一个包含两列的数据框,a: [1,2,3,4,5]; b:[1,0.4,0.3,0.5,0.2]。我怎样才能创建一个c列:

c[0] = 1  
c[i] = c[i-1]*b[i]+a[i]*(1-b[i])

这样c:[1,1.6,2.58,3.29,4.658]

计算:

1 = 1
1*0.4+2*0.6 = 1.6
1.6*0.3+3*0.7 = 2.58
2.58*0.5+4*0.5 = 3.29
3.29*0.2+5*0.8 = 4.658

最佳答案

我看不到一种方法来矢量化你的递归算法。但是,您可以使用 numba 来优化当前逻辑。这应该比常规循环更好。

from numba import jit

df = pd.DataFrame({'a': [1,2,3,4,5],
'b': [1,0.4,0.3,0.5,0.2]})

@jit(nopython=True)
def foo(a, b):
c = np.zeros(a.shape)
c[0] = 1
for i in range(1, c.shape[0]):
c[i] = c[i-1] * b[i] + a[i] * (1-b[i])
return c

df['c'] = foo(df['a'].values, df['b'].values)

print(df)

a b c
0 1 1.0 1.000
1 2 0.4 1.600
2 3 0.3 2.580
3 4 0.5 3.290
4 5 0.2 4.658

关于python - 如何计算 Pandas 自定义权重的移动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52008241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com