有没有一种方法可以根据数据框中的现有值将值行添加到新列中的数据框中?

Is there a way I can add rows of values to a dataframe in new columns, based on existing values in the dataframe?

我正在尝试回测交易策略。

我已经保存为数据框的列: 'Date'、'A'、'B'、'C'

我正在尝试通过逐行执行操作来为现有数据框创建 D、E、F 和 G 列。

我正在尝试:

  1. 从 D0 的值 1000 开始。
  2. 通过 D0 * C0 计算 E0。
  3. 通过E0 / A0计算F0。
  4. 通过 (B0 * F0)-(A0 * F0) 计算 G0
  5. 用D0 + G0计算D1
  6. 对每一行重复。 例如,E1 = (D1 * C1)。 F1 = E1 / A1 依此类推
Date A B C D E F G
0 100 200 0.05 1000 1000*0.05 (1000*0.05)/100 (B0 * F0)-(A0 * F0)
1 200 150 0.01 1000 + (B0 * F0)-(A0 * F0)
2 150 160 0.03

总共有 500 行,手动完成所有这些显然是不可能的,这让我觉得我需要使用 for 循环,但我不确定如何使用。我该怎么做?

df.at[0, 'D'] = 1000
for i in range(1, 500):
    df.at[i, 'D'] = df.at[i-1, 'D'] + df.at[i-1, 'G']
    df.at[i, 'E'] = df.at[i, 'D'] * df.at[i, 'C']
    df.at[i, 'F'] = df.at[i, 'E'] / df.at[i, 'A']
    df.at[i, 'G'] = (df.at[i, 'B'] - df.at[i, 'A']) * df.at[i, 'F']

要计算 500 行的迭代操作,使用显式 for 循环是最简单的解决方案。:

for i in range(1, n):
    df.at[i, "D"] = df.at[i-1, "D"]+df.at[i-1, "G"]
    df.at[i, "E"] = df.at[i, "D"]*df.at[i, "C"]
    df.at[i, "F"] = df.at[i, "E"]/df.at[i, "A"]
    df.at[i, "G"] = (df.at[i, "B"]-df.at[i, "A"])*df.at[i, "F"]