Как заполнить последующие строки на основе значения предыдущей строки и значения из другого столбца в Python Pandas? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующее 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))

1 Ответ

2 голосов
/ 29 мая 2020
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
...