Pandas:如何构造行应用,它需要以前的输出作为inpu

2024-10-01 09:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但是,我想从上一行得到结果,并将其用作下一行优化的猜测。我不知道怎么设置。下面是我的粗略代码草图,如您所见,我不知道如何提供guessgetFlow()

# 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)

Tags: 代码falsedfdefsomecol2col1row
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:39

您可以使用一个全局变量来跟踪猜测,但是显式循环可能要干净得多,如下面的伪代码

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

相关问题 更多 >