pandas dataframe:基于“将函数应用于上一行”;“当前”;一行

pandas dataframe:基于“将函数应用于上一行”;“当前”;一行,pandas,Pandas,我需要在数据框中添加一列,其中每个值都是前几行的累加。我面临的挑战是,前面的值是“当前”值的函数,因此我无法使用cumsum() 最初的代码使用了一个双循环,我将其替换为apply,即使对于一个小数据集,性能也有了显著提高,但我觉得应该有更好的方法。下面的代码显示了我需要执行的精确计算 def apply_formula(row, a, b): # where a and b are series c = 0 cum = 0 for j in range(0, row

我需要在数据框中添加一列,其中每个值都是前几行的累加。我面临的挑战是,前面的值是“当前”值的函数,因此我无法使用
cumsum()

最初的代码使用了一个双循环,我将其替换为
apply
,即使对于一个小数据集,性能也有了显著提高,但我觉得应该有更好的方法。下面的代码显示了我需要执行的精确计算

def apply_formula(row, a, b): # where a and b are series

    c = 0
    cum = 0

    for j in range(0, row.name + 1): # iterate through the previous rows

        c = ((a[j] - a[j - 1]) / row.a) * log(row.b - b[j - 1]) / 2.3

        cum += c # accumulate

    return cum

df["new"] = df.apply(apply_formula, axis = 1, args = [df.a, df.b])

什么
pandas
函数可以帮助我解决这个问题?

您可以提供输入和预期输出数据帧吗?这里的问题是,您在问题中提出的“简化”计算只能通过b列上的
cumsum
完成。尝试
df['new_2']=df.b.cumsum()/df.a*np.log(df.time)
,您将获得与
df['new']
相同的值(或者至少在我的示例中它使用随机值)。如果你想要一个可以用于实际案例的答案,请提供准确的计算方法。谢谢你的建议。我刚刚用我需要执行的精确计算更新了问题。