基于上面的行创建新的dataframe行

2024-10-02 12:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有一列的数据帧(更改)。 我想创建一个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]

它确实可以正常工作,但是在一个大的数据帧上它非常慢,所以我正在寻找任何更快的方法来实现这一点


Tags: 数据方法in示例dfforindexlen
1条回答
网友
1楼 · 发布于 2024-10-02 12:30:49

我会在修改过的change列上使用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的第一行是什么意思)

相关问题 更多 >

    热门问题