Добавление сдвига строки в pandas кадре данных - PullRequest
1 голос
/ 16 апреля 2020

У меня есть pandas df, который я создал с помощью функции shift(), перебирающей исходную df:

for i in range(2, 4):
    df["lag_{}".format(i)] = df.x.shift(i)

Таким образом, будет действительный столбец x и lag2-lag10 столбцы со смещенными x значениями. Я подготовил этот набор данных для регрессионной модели, чтобы сделать прогноз на один шаг вперед. Хотелось бы добавить новую строку в конце кадра данных со значением nan для x и смещенными значениями из последней позиции, чтобы иметь возможность использовать эти новые лаги для подгонки модели для прогнозирования этого нового значения nan. Как это можно сделать в pandas? Спасибо!

Upd: есть пи c для df, unbolded-df, bold-требуемая строка для получения:

enter image description here

1 Ответ

1 голос
/ 16 апреля 2020

Используйте DataFrame.append со словарем с ключом x:

df = pd.DataFrame({'x':range(10)})

df1 = df.append({'x':np.nan}, ignore_index=True)
#alternative
#df1 = df.append(pd.Series([np.nan], index=['x']), ignore_index=True)

for i in range(2, 10):
    df1["lag_{}".format(i)] = df1.x.shift(i)
print (df1)
      x  lag_2  lag_3  lag_4  lag_5  lag_6  lag_7  lag_8  lag_9
0   0.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN
1   1.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN
2   2.0    0.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN
3   3.0    1.0    0.0    NaN    NaN    NaN    NaN    NaN    NaN
4   4.0    2.0    1.0    0.0    NaN    NaN    NaN    NaN    NaN
5   5.0    3.0    2.0    1.0    0.0    NaN    NaN    NaN    NaN
6   6.0    4.0    3.0    2.0    1.0    0.0    NaN    NaN    NaN
7   7.0    5.0    4.0    3.0    2.0    1.0    0.0    NaN    NaN
8   8.0    6.0    5.0    4.0    3.0    2.0    1.0    0.0    NaN
9   9.0    7.0    6.0    5.0    4.0    3.0    2.0    1.0    0.0
10  NaN    8.0    7.0    6.0    5.0    4.0    3.0    2.0    1.0
...