Slice (...) - недопустимый ключ - PullRequest
0 голосов
/ 19 июня 2020

Я хочу нарезать мой df_d_train, который имеет только один столбец (int) и дату в качестве индекса, на 21 шаг.

Мой df выглядит так:

df_d_train.head()

Close Date   
2011-12-31  4.472624 
2012-01-01  4.680778
2012-01-02  5.000000 
2012-01-03  5.145917 
2012-01-04  5.22872

Я пробовал :

step=21
x_train=[]
y_train=[]

    for i in range(step,df_d_train.shape[0]):
        x_train.append(df_d_train[i-step:i,0])
        y_train.append(df_d_train[i,0])

    x_train,y_train=np.array(x_train),np.array(y_train)
    x_train=x_train.reshape(x_train.shape[0],x_train.shape[1],1) #reshaped for RNN
    print("x_train shape= ",x_train.shape)
    print("y_train shape= ",y_train.shape)

... что вызывает:

TypeError: '(slice (0, 21, None), 0)' является недопустимым ключом

Помощь будет признательна. Спасибо!

1 Ответ

1 голос
/ 20 июня 2020

Кажется, что исключение было создано x_train.append(df_d_train[i-step:i,0]).

На самом деле проблема в df_d_train[i-step:i,0].

Проблема в том, что:

  • индекс в df_d_train ( Дата закрытия ) может быть либо строка ( объект ), либо datetime type (вы не указали эту деталь),
  • , но вы пытаетесь передать целые числа в качестве значений индекса.

Другая проблема заключается в том, что 0 не является допустимым именем столбца (по крайней мере, если посмотреть на ваш образец данных).

Я думаю, вам не нужен индекс, а скорее вы хотите получить некоторую часть этого DataFrame, используя integer количество строк / столбцов.

Для этого используйте ilo c:

df_d_train.iloc[i-step:i,0]

То же, что и в следующей инструкции.

И одно исправление к вашему сообщению: единственный столбец в вашем DataFrame не int . Это float .

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