我如何在数据框中执行之前的计算

问题描述 投票:0回答:3

嗨,假设我有df

x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))

enter image description here

但是我想更改列y下的值,使第一行为100,第二行为102(即100 * .02),第三行为107.1(102 * 1.05),依此类推。

我该怎么做? (我认为应该使用shift函数来完成?)

python dataframe shift
3个回答
1
投票

我想下面是您所需要的

df.loc[0,'y'] = 100
for i in range(1, len(df)):
    df.loc[i, 'y'] = df.loc[i-1, 'y'] * (df.loc[i, 'x'] + df.loc[i, 'y'])

    x       y
0   0.12    100.000
1   0.02    102.000
2   0.05    107.100
3   0.04    111.384

0
投票

我猜您想执行此操作:y = 100*(x+y)

如果是这种情况,您可以执行以下操作:

df['y'] = 100*df.sum(axis=1)

0
投票

这是您的意思吗?

df.loc[i, 'y'] = 100 
for i in range(1, len(df)): 
    df.loc[i, 'y'] = df.loc[i - 1, 'y'] * (1 + df.loc[i, 'x'])

输出:

      x        y
0  0.12  100.000
1  0.02  102.000
2  0.05  107.100
3  0.04  111.384
© www.soinside.com 2019 - 2024. All rights reserved.