我需要向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
函数可以帮助我解决此问题?