如何根据先前的行值和Python Pandas中另一列的值填充后续的行?

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

我有以下df

cases  percent_change
100    0.01
NaN    0.00
NaN    -0.001
NaN    0.05

对于cases列的下一行(从第二行开始),其计算为next cases = previous cases * (1 + previous percent_change),对于100以下的行,其计算为100 *(1 + 0.01)= 101。 ,它应该像这样填充

cases  percent_change
100    0.01
101    0.00
101    -0.001
100.899    0.05

我想忽略第一行(或100)。这是我的无效代码

df.loc[1:, 'cases'] = df['cases'].shift(1) * (1 + df['percent_change'].shift(1))

也尝试过,但没有成功

df.loc[1:, 'cases'] = df.loc[1:, 'cases'].shift(1) * (1 + df.loc[1:, 'percent_change'].shift(1))
python-3.x pandas data-science
1个回答
2
投票
df['cases'] = (df.percent_change.shift(1).fillna(0) + 1).cumprod() * df.at[0, 'cases']
print(df)

打印:

     cases  percent_change
0  100.000           0.010
1  101.000           0.000
2  101.000          -0.001
3  100.899           0.050
© www.soinside.com 2019 - 2024. All rights reserved.