[英]Create new dataframe row based on row above
I have a dataframe with one column (Change).我有一个带有一列的 dataframe(更改)。 I would like to create NewColumn which inputs the number 60 on its first row, and for each row after that is given by 'Change' * the previous value in NewColumn + the previous value in NewColumn.
我想创建NewColumn,它在第一行输入数字60,之后的每一行由'Change' * NewColumn 中的前一个值+ NewColumn 中的前一个值给出。 Resulting in the sample dataframe below
导致下面的示例 dataframe
Index Change NewColumn
0 0.02 60
1 -0.01 59.4
2 0.05 62.37
3 0.02 63.6174
I can achieve this by running the following loop我可以通过运行以下循环来实现这一点
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]
Which does work okay but over a large dataframe it is pretty slow so I'm looking for any faster way to do this.哪个确实可以,但是在大型 dataframe 上它很慢,所以我正在寻找更快的方法来做到这一点。
I would use Series.cumprod
on a modified change column, then just multiply that to the start value of 60:我会在修改后的更改列上使用
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
(I changed the first Change
value to zero, because its not clear what the first row of Change
means) (我将第一个
Change
值更改为零,因为不清楚第一行Change
的含义)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.