У меня есть кадр данных панд с временным рядом исторических кривых движения природного газа. Т.е. на каждую дату в прошлом у меня есть месячная цена на природный газ на следующие 17 месяцев. У меня есть эти цены для двух разных мест. Таким образом, каждая дата имеет 34 строки данных (2 местоположения x 17 месяцев).
Природный газ иногда покупается и продается в виде сезонных полос. Зимняя полоса с ноября по март (5 месяцев). Летняя полоса с апреля по октябрь (семь месяцев). Я хотел бы усреднить цены отдельных месяцев во фрейме данных в виде полос - для каждой исторической даты и для каждого местоположения.
Вот некоторые примеры данных:
Location Month Date Price
a 11/1/2017 11/1/2017 1
a 12/1/2017 11/1/2017 1
a 1/1/2018 11/1/2017 1
a 2/1/2018 11/1/2017 1
a 3/1/2018 11/1/2017 1
a 4/1/2018 11/1/2017 2
a 5/1/2018 11/1/2017 2
a 6/1/2018 11/1/2017 2
a 7/1/2018 11/1/2017 2
a 8/1/2018 11/1/2017 2
a 9/1/2018 11/1/2017 2
a 10/1/2018 11/1/2017 2
a 11/1/2018 11/1/2017 3
a 12/1/2018 11/1/2017 3
a 1/1/2019 11/1/2017 3
a 2/1/2019 11/1/2017 3
a 3/1/2019 11/1/2017 3
b 11/1/2017 11/1/2017 4
b 12/1/2017 11/1/2017 4
b 1/1/2018 11/1/2017 4
b 2/1/2018 11/1/2017 4
b 3/1/2018 11/1/2017 4
b 4/1/2018 11/1/2017 5
b 5/1/2018 11/1/2017 5
b 6/1/2018 11/1/2017 5
b 7/1/2018 11/1/2017 5
b 8/1/2018 11/1/2017 5
b 9/1/2018 11/1/2017 5
b 10/1/2018 11/1/2017 5
b 11/1/2018 11/1/2017 6
b 12/1/2018 11/1/2017 6
b 1/1/2019 11/1/2017 6
b 2/1/2019 11/1/2017 6
b 3/1/2019 11/1/2017 6
a 11/1/2017 11/2/2017 7
a 12/1/2017 11/2/2017 7
a 1/1/2018 11/2/2017 7
a 2/1/2018 11/2/2017 7
a 3/1/2018 11/2/2017 7
a 4/1/2018 11/2/2017 8
a 5/1/2018 11/2/2017 8
a 6/1/2018 11/2/2017 8
a 7/1/2018 11/2/2017 8
a 8/1/2018 11/2/2017 8
a 9/1/2018 11/2/2017 8
a 10/1/2018 11/2/2017 8
a 11/1/2018 11/2/2017 9
a 12/1/2018 11/2/2017 9
a 1/1/2019 11/2/2017 9
a 2/1/2019 11/2/2017 9
a 3/1/2019 11/2/2017 9
b 11/1/2017 11/2/2017 10
b 12/1/2017 11/2/2017 10
b 1/1/2018 11/2/2017 10
b 2/1/2018 11/2/2017 10
b 3/1/2018 11/2/2017 10
b 4/1/2018 11/2/2017 11
b 5/1/2018 11/2/2017 11
b 6/1/2018 11/2/2017 11
b 7/1/2018 11/2/2017 11
b 8/1/2018 11/2/2017 11
b 9/1/2018 11/2/2017 11
b 10/1/2018 11/2/2017 11
b 11/1/2018 11/2/2017 12
b 12/1/2018 11/2/2017 12
b 1/1/2019 11/2/2017 12
b 2/1/2019 11/2/2017 12
b 3/1/2019 11/2/2017 12
Семнадцать последующих месяцев в этих данных эквивалентны трем сезонным полосам (две зимы и одна летняя). Таким образом, после того, как эти данные будут усреднены, появятся три сезонные цены на полосы для двух местоположений на две исторические даты. Я использовал простые возрастающие цены в каждом сезоне, чтобы цифры были простыми. Мне также нужно будет переименовать месяцы в названия полос. Мы будем использовать СП для лета и XH для зимы с соответствующим годом - таким образом, нашим примером будет XH1718, JV18, XH1819, для зимы, начинающейся в 17, заканчивающейся 18, летом 18, зимой, начинающейся в 18 и заканчивающейся в 19 .
Средние цены на полосы с новыми названиями будут выглядеть примерно так:
Loc A A A B B B
Season XH1718 JV18 XH1819 XH1718 JV18 XH1819
11/1/2017 1 2 3 4 5 6
11/2/2017 7 8 9 10 11 12
К сожалению, у меня нет кода для этого. Я чувствую, что было бы возможно усреднить полосы во время поворота этого фрейма данных, но я просто не уверен, как сказать Python усреднить все в диапазонах сезонных месяцев (это реальный ключ - я думаю, для остальных я бы по группам), для каждого исторического дня, для каждого местоположения.
Формат вывода не очень важен, это может быть просто фрейм данных с новыми усредненными полосами или сводная таблица.
В двух словах я пытаюсь:
- Построить средние цены за каждый исторический день в столбце «Дата» (в выборочных данных их две)
- Построить средние цены для каждого местоположения (в выборочных данных их два)
- усреднить цены, используя даты в столбце «Месяц» данных (есть 17 месяцев, но три сезона - две зимы по пять месяцев каждая, одно лето в семь месяцев)
-Переименуйте новые средние цены XH1718, JV18, XH1819. Если бы был способ сделать это в формальной форме, это было бы еще лучше
Спасибо за любые предложения или помощь