У меня есть набор данных с индексом уровня 0 в качестве идентификатора клиента и индексом уровня 1 в качестве voucher_date.Моя колонка интереса - «приток», где я хочу, чтобы скользящая сумма последних 180 дат ваучера для каждого клиента.Однако я хочу это только в том случае, если столбец «original_voucher_date» меньше или равен максимальному индексу «voucher_date» в скользящей сумме.
Приведенный ниже код хорошо работает для получения скользящей суммы без каких-либо условий.
df_unpaid_c1_hmm_date_lvl1 = df_unpaid_c1_hmm_date.copy()
df_unpaid_c1_hmm_date_lvl1.index = df_unpaid_c1_hmm_date_lvl1.index.droplevel(0)
df_unpaid_c1_hmm_date_lvl1.groupby('customer_id').inflow.rolling('180D').sum().reset_index(level=0, drop=True)
Вот фиктивный набор данных: -
customer_id voucher_date inflow ori_voucher_date
1 2009-10-23 17000.0 2009-12-23
2010-02-26 10000.0 2010-10-26
2011-12-29 0.0 2011-02-29
2012-03-31 0.0 2012-05-31
2012-07-23 1000.0 2013-07-23
2012-09-24 500.0 2012-11-24
2012-10-19 15200.0 2012-10-19
2012-10-30 1000.0 2012-12-30
2012-12-25 0.0 2014-12-25
2 2013-01-15 0.0 2013-06-15
2 2013-02-22 20000.0 2013-05-22
И ожидаемый результат: -
customer_id voucher_date inflow ori_voucher_date rollin
1 2009-10-23 17000.0 2009-12-23 0.0
2010-02-26 10000.0 2010-10-26 17000
2011-12-29 0.0 2011-02-29 0.0
2012-03-31 0.0 2012-05-31 0.0
2012-07-23 1000.0 2013-07-23 0.0
2012-09-24 500.0 2012-11-24 0.0
2012-10-19 15200.0 2012-10-19 15200
2012-10-30 1000.0 2012-12-30 15200
2012-12-25 0.0 2014-12-25 15700
2 2013-01-15 0.0 2013-06-15 0.0
2 2013-02-22 20000.0 2013-05-22 0.0