我有以下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))发布于 2020-05-29 07:53:49
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.050https://stackoverflow.com/questions/62076265
复制相似问题