Pandas:如何构建需要先前输出作为输入的行式应用

Pandas: How to structure row-wise apply which requires previous output as input

我必须为每一行计算一些 newValuenewValuedf.col1, df.col2 中非线性方程的解。我决定按行 df.apply() 来实现它。

但是,我想获取上一行的结果,并将其用作下一行优化的猜测。我对如何设置它一无所知。以下是我的粗略代码草图,如您所见,我不知道如何将 guess 提供给 getFlow()

# this function does some computation given a row
def getFlow(row, guess = False):
    # define a residual to minimize
    def flowResidual(col1, col2):
        # here would be some code
        return np.abs(doSomeCalculationsAndCreateResidual(col1, col2))
    if guess == False:
        guess = 0.1
    inflowRate = optimize.fmin(flowResidual, guess, args=(row.col1, row.col2))
# I have some dataframe df
df['newValue'] = df.apply(getFlow, axis=1)

可以使用全局变量来跟踪猜测,但显式循环可能更清晰,如下面的伪代码所示。

ans = np.zeros(len(df))

for i, (col1, col2) in enumerate(df.itertuples(index=False)):
    ...
    if i == 0:
        guess = 0.1
    else:
        guess = ans[i-1]
    ans[i] = optimize(...)

df['newValue'] = ans