如何在不循环的情况下对多个列(包括结果列)调用 apply



例如,我有两列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

最新更新