根据上面的行创建新的数据框行

我有一个包含一列(更改)的数据框。我想创建 NewColumn,它在第一行输入数字 60,之后的每一行由“Change”* NewColumn 中的前一个值 + NewColumn 中的前一个值给出。导致下面的示例数据框

 Index    Change    NewColumn
   0       0.02       60
   1      -0.01      59.4
   2       0.05      62.37
   3       0.02      63.6174

我可以通过运行以下循环来实现这一点

df['NewColumn'] = 0.00000
for i in range(len(df)):
    if i == 0:
        df['NewColumn'][i] = 60
    else:
        df['NewColumn'][i] = df['NewColumn'][i-1] * df['Change'][i] + df['NewColumn'][i-1]

哪个工作正常,但在大型数据帧上它非常慢,所以我正在寻找任何更快的方法来做到这一点。

回答

我会Series.cumprod在修改后的更改列上使用,然后将其乘以 60 的起始值:

df = pd.DataFrame(dict(Change=[0.00, -0.01, 0.05, 0.02]))
multiplier = (df.Change + 1.0).cumprod()
df['New Column'] = multiplier * 60 

df                                                                                                                     
     Change   New Column                                                                                                   
0    0.00     60.0000                                                                                                   
1   -0.01     59.4000                                                                                                   
2    0.05     62.3700                                                                                                   
3    0.02     63.6174  

(我把第一个Change值改为零,因为不清楚第一行是什么Change意思)


以上是根据上面的行创建新的数据框行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>