Я только показываю 2 случая, которые иллюстрируют мою проблему, но реальный df
имеет гораздо больше строк. Я хочу создать новый столбец, который будет считать месяцы, прошедшие с последнего рейза для каждого идентификатора. Если у id два рейза, месяц, прошедший с последнего рейза, должен снова сброситься во втором рейсе. Если у идентификатора был только один рейз, то разница месяца прошлого года с «последним рейзом» должна быть против самого старого месяца в df
для каждого пользователя (первая строка для каждого пользователя).
Если у меня есть такой кадр данных:
id amount date. diff_amount. raise
1 200 01/02/2018 NaN 0
1 200. 01/03/2018 0 0
1 200 01/04/2018 0 0
1 250. 01/05/2018 50 1
1 250 01/06/2018 0 0
1 250 01/07/2018 0 0
1 250 01/09/2018 0 0
1 250 01/11/2018 0 0
1 350 01/12/2018 100 1
1 250 01/01/2019 0 0
2 500 01/06/2018 NaN 0
2 500 01/07/2018 0 0
2 500 01/06/2018 0 0
2 550 01/07/2018 50 1
ожидаемый результат:
id amount date. diff_amount. raise month_from_last_raise
1 200 01/02/2018 NaN 0 0
1 200. 01/03/2018 0 0 1
1 200 01/04/2018 0 0 2
1 250. 01/05/2018 50 1 3
1 250 01/06/2018 0 0 1
1 250 01/07/2018 0 0 2
1 250 01/09/2018 0 0 3
1 250 01/11/2018 0 0 4
1 350 01/12/2018 100 1 5
1 250 01/01/2019 0 0 1
2 500 01/06/2018 NaN 0 0
2 500 01/07/2018 0 0 1
2 500 01/06/2018 0 0 2
2 550 01/07/2018 50 1 3