我必须为每一行计算一些newValue
。 newValue
是 df.col1, df.col2
中非线性方程的解。我决定将其实现为逐行 df.apply()
。
但是,我想获取前一行的结果,并将其用作下一行优化的猜测。我对如何设置一无所知。以下是我的粗略代码草图,正如您所看到的,我不知道如何向 getFlow()
提供 guess
。
# 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
关于python - Pandas:如何构建需要先前输出作为输入的行式应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630812/