У меня есть фрейм данных (фрагмент ниже) с индексом в формате YYYYMM и несколькими столбцами значений, включая один, называемый «месяц», в котором я извлек данные MM из столбца индекса.
index st us stu px month
0 202001 2616757.0 3287969.0 0.795858 2.036 01
1 201912 3188693.0 3137911.0 1.016183 2.283 12
2 201911 3610052.0 2752828.0 1.311398 2.625 11
3 201910 3762043.0 2327289.0 1.616492 2.339 10
4 201909 3414939.0 2216155.0 1.540930 2.508 09
Что я хочу сделать, так это создать новый столбец с именем «stavg», который принимает среднее значение за 5 лет для столбца «st» за данный месяц. Например, поскольку верхняя строка относится к 202001, значение этой строки должно быть средним значением январских значений 2019, 2018, 2017, 2016 и 2015 годов. Возвращение во времени на каждый дополнительный год должно оттягивать скользящую среднюю назад. Кроме того, такой, что stavg для строки, скажем, 201205 должен показывать среднее значение майских значений за 2011, 2010, 2009, 2008 и 2007 годы.
index st us stu px month stavg
0 202001 2616757.0 3287969.0 0.795858 2.036 01 xxx
1 201912 3188693.0 3137911.0 1.016183 2.283 12 xxx
2 201911 3610052.0 2752828.0 1.311398 2.625 11 xxx
3 201910 3762043.0 2327289.0 1.616492 2.339 10 xxx
4 201909 3414939.0 2216155.0 1.540930 2.508 09 xxx
Я знаю, как генерировать новые столбцы данных, основанных на операциях над другими столбцами в той же строке (таких как деление 'st' на 'us' для получения 'stu' и извлечение цифр из индекса для получения 'month'), но это понятие создания столбца данных на основе предыдущие значения действительно ставят меня в тупик.
Любые подсказки о том, как подойти к этому, будут с благодарностью! Я знаю, что за первые пять лет данных я не смогу заполнить столбец 'stavg' чем-нибудь, что хорошо - я мог бы использовать NaN там.