pandas数据框:基于“当前”行将功能应用于先前的行

时间:2019-10-21 01:07:04

标签: pandas

我需要向pandas dataframe添加一列,其中每个值都是前几行的累加。我面临的挑战是以前的值是“当前”值的函数,因此我无法使用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函数可以帮助我解决此问题?

0 个答案:

没有答案