Проблема с pandas shift () при применении к временным рядам с индексацией - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь создать 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 Я здесь скучаю. Большое спасибо.

...