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