Я пытаюсь создать df, содержащий запаздывающие значения временного ряда для контролируемой учебной задачи, используя метод pandas shift (). При попытке установить значение periodPast больше 2015, я получаю следующую ошибку при использовании фиктивных данных во фрагменте ниже:
ValueError: Must have equal len keys and value when setting with an iterable
При использовании фактических данных временного ряда я получаю следующую ошибку :
ValueError: could not broadcast input array from shape (8760) into shape (8760,2015)
Я изменил год первой даты в диапазоне времени индекса на 2017, ошибка появляется, если periodPast больше 2017.
Фрагмент кода (фиктивные данные):
import pandas as pd
periodsPast = 2020 # any value above 2015 would give an error
series = pd.Series(data = [i for i in range(1,10001)], index=pandas.date_range('2015-01-01 00:00:00',periods=10000,freq='H'))
dfLags = pd.DataFrame(data=None, index=series.index)
for t in range(0, periodsPast + 1):
if t == 0:
dfLags['t'] = series
else:
dfLags['t-'+str(t)] = series.shift(t)
Кажется, что по какой-то причине 2016-й столбец не может быть добавлен. Также не случайно, что значение, при котором возникает ошибка, соответствует году первого индекса.
Есть идеи? Это должно быть что-то очень простое c Я здесь скучаю. Большое спасибо.