У меня есть такой DataFrame:
df = pd.DataFrame({'id': [111,111,111, 222,222,222],\
'Date': ['30.04.2020', '31.05.2020', '30.06.2020', \
'30.04.2020', '31.05.2020', '30.06.2020'],\
'Debt': [100,100,70, 200,200,200] , \
'Ear_coef': [0,0.2,0.2, 0,0,0.3]})
df['Date'] = pd.to_datetime(df['Date'] )
df['Contract'] = pd.DataFrame(df.groupby(['id']).apply(lambda x: x.Debt - x.Debt.shift(1))).reset_index().Debt
# df.groupby(['id']).
df
Мне нужно получить такой DataFrame:
Начальный кадр данных:
- первый столбец - идентификатор контракта;
- второй столбец - дата;
- третий столбец - коэффициент предоплаты (EAR);
- 4-й столбец - контрактный платеж;
Результирующий кадр данных:
- 5-й столбец EAR. Он равен Ear_coef (t) * Debt_with_EAR (t-1)
- 6-й столбец - это Debt_with_EAR. Это равняется Debt_with_EAR (t-1) + Contract (t) + EAR (t)
Ear и Debt_with_EAR на первую дату равняется 0 и Debt в соответственно.
Я пытался решить такую задачу с приложением. Но я не добился успеха, так как мне нужно использовать предыдущее значение, которое также рассчитывается. Эти ответы мне не помогают Есть ли способ в Pandas использовать предыдущее значение строки в dataframe.apply, когда предыдущее значение также вычисляется в apply? , поскольку у меня есть сотни id.
Буду благодарен за помощь.