例如,我有两列A和B(如在熊猫数据帧中(:
一 乙 0 1 1 1 1 0 2 0 1 3 0 0
如何根据 A、B 和 C_prev_row(上一行自己的计算值(计算 C 列,以获得以下结果:
阿 乙 C 0 1 1 1 1 1 0 1 2 0 1 1 3 0 0 0 我希望
应用的公式是:
C = A * C_prev_row + B, the initial C_prev_row = 0.
对于第 0 行:
C0 = 1 * 0 + 1 = 1
对于第 1 行:
C1 = 1 * 1 + 0 = 1
对于第 2 行:
C2 = 0 * 1 + 1 = 1
对于第 3 行:
C3 = 0 * 1 + 0 = 0
有没有办法在不循环访问行的情况下做到这一点以获得更好的性能?
你需要分解值C背后的逻辑
(df.A.iloc[1:].cumprod()*1).add((df.A.iloc[2:].cumprod()*df.B.iloc[1])+df.B,fill_value=0).fillna(1)
Out[983]:
0 1.0
1 1.0
2 1.0
3 0.0
dtype: float64
更多信息
C1=1
C2=A2*C1+B2
C3=A3*C2+B3=A3*A2*C1+A3*B2+B3
C4=A4*C3+B4=A4*A3*A2*C1+A4*A3*B2+B4