Индекс Pandas возвращает значение ошибки: ValueError: Несоответствие длины: ожидаемая ось имеет 199 элементов, новые значения имеют 200 элементов - PullRequest
0 голосов
/ 25 сентября 2018

Я написал этот кусок кода, но когда я попытаюсь использовать функцию Series

import pandas as pd
import numpy as np
import datetime as dt

# example values
dates = np.asarray(pd.date_range('2000-01-01', periods=200))

# create a dataframe
df = pd.DataFrame(np.random.randn(200, 4), index=dates, columns=['A', 'B', 'C', 'D'])

print(df)
start_idx = np.where(dates>=np.datetime64(dt.datetime.strptime('2000-01-01', "%Y-%m-%d")))[0][-1]

dateIndex = df[0: start_idx+1].index
print(dateIndex)


historydict = {}
for i in range(3):
    returnHistory = pd.Series(df[i+1:start_idx+2]['A'])
    returnHistory.index = dateIndex
    # the above two periods assigned to date t, the returns lagged by i periods
    rname="Hist"+str(i+1)
    historydict[rname]=returnHistory
hDataFrame = pd.DataFrame(historydict)
print(hDataFrame)

historydict будет использоваться для отслеживания серии для t-1, t-2, t-3, каждый будетстать столбцом в кадре данных, но

returnHistory.index = dateIndex

выдает эту ошибку:

ValueError: Length mismatch: Expected axis has 199 elements, new values have 200 elements

1 Ответ

0 голосов
/ 25 сентября 2018

В строке

returnHistory = pd.Series(temp)

- это pandas.DataFrame объект с формой (199, 4).Попробуйте

returnHistory = pd.Series(temp['A'])

или другой столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...