Python 3.x 如何使用python在pandas数据帧中有效地迭代行

Python 3.x 如何使用python在pandas数据帧中有效地迭代行,python-3.x,pandas,dataframe,iteration,Python 3.x,Pandas,Dataframe,Iteration,我有一个数据框,看起来像: A B C 13.06 12.95 -0.11 92.56 104.63 12.07 116.49 219.27 102.78 272.11 487.26 215.15 300.11 780.75 480.64 大约有一百万条记录 我想创建一列D,计算如下: 列D的第一个值将为0,然后: cold3==(D2+1)*C3/B3 cold4==(D3+1)*C4/B4 D列当前值取决于以前的值 结果如下: D 0

我有一个数据框,看起来像:

A         B       C
13.06   12.95   -0.11
92.56   104.63  12.07
116.49  219.27  102.78
272.11  487.26  215.15
300.11  780.75  480.64
大约有一百万条记录

我想创建一列D,计算如下:

D
的第一个值将为0,然后:

cold3
=
=(D2+1)*C3/B3

cold4
=
=(D3+1)*C4/B4

D列当前值取决于以前的值

结果如下:

D
0
0.115358884
0.52281017
0.672397915
1.02955022

我可以使用
for loop和loc解决这个问题,但这需要花费很多时间。我可以用更有效的pythonic方法解决它吗?

递归计算不可矢量化,因为使用了改进性能:


给出错误:TypingError:在Nopyton模式管道(步骤:Nopyton前端)非精确类型数组(pyobject,1d,C)[1]期间:在(3)文件“”中键入参数,第3行:def calc(a,b,C):d=np.empty(a.shape)^@MAC-是由数字?df={'HW':['13.06','92.56','116.49','272 11','300.11','IBC]填充的列:[12.95104.63219.27487.26780.75],'jik':[-0.1112.07102.78215.15480.64]}df=pd.DataFrame(df)@MAC-确切地说,问题是
HW
由字符串填充,而不是数字。需要将其转换为数字,请检查
from numba import jit

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

df['D'] = f(df['A'].to_numpy(), df['B'].to_numpy(), df['C'].to_numpy())
print (df)
        A       B       C         D
0   13.06   12.95   -0.11  0.000000
1   92.56  104.63   12.07  0.115359
2  116.49  219.27  102.78  0.522810
3  272.11  487.26  215.15  0.672398
4  300.11  780.75  480.64  1.029550