嗨,假设我有df
x=[.12,.02,.05,.04]
y=[1,1,1,1]
df=pd.DataFrame(dict(x=x,y=y))
但是我想更改列y下的值,使第一行为100,第二行为102(即100 * .02),第三行为107.1(102 * 1.05),依此类推。
我该怎么做? (我认为应该使用shift函数来完成?)
我想下面是您所需要的
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
我猜您想执行此操作:y = 100*(x+y)
。
如果是这种情况,您可以执行以下操作:
df['y'] = 100*df.sum(axis=1)
这是您的意思吗?
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