且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何使用pandas-python递归构造一列数据框?

更新时间:2022-12-11 20:32:21

您可以使用:

df.loc[0, 'diff'] = df.loc[0, 'val'] * 0.4

for i in range(1, len(df)):
    df.loc[i, 'diff'] = (df.loc[i, 'val'] - df.loc[i-1, 'diff']) * 0.4  + df.loc[i-1, 'diff']

print (df)
     id_  val     diff
0  11111   12   4.8000
1  12003   22  11.6800
2  88763   19  14.6080
3  43721   77  39.5648

计算的迭代性质,其中输入取决于先前步骤的结果,使矢量化变得复杂.您也许可以将 apply 与执行与循环相同的计算的函数一起使用,但在幕后这也将是一个循环.

The iterative nature of the calculation where the inputs depend on results of previous steps complicates vectorization. You could perhaps use apply with a function that does the same calculation as the loop, but behind the scenes this would also be a loop.