создайте скользящее окно входных данных из фрейма данных pandas

#python #pandas

#python #pandas

Вопрос:

Я должен создать скользящее окно входных данных с window size = 3

Фрейм данных

      0   1
 0   1   2
 1   3   4
 2   5   6
 3   7   8 
  

Желаемый результат:

      0   1   2   3   4   5
 0   1   2   NA  NA  NA  NA
 1   3   4   1   2   NA  NA
 2   5   6   3   4   1   2
 3   7   8   5   6   3   4
  

Я использовал data.values.flatten() , но он преобразует все строки в dataframe в nested list .
Как я могу создать скользящее окно входных данных (желаемой длины окна) из dataframe

Комментарии:

1. То, что вы описали в своем выводе, выглядит следующим образом df.shift

Ответ №1:

Вы можете просто concat :

 new_df = pd.concat([df.shift(i) for i in range(3)], axis=1)

# rename columns
new_df.columns = np.arange(new_df.shape[1])
  

вывод:

    0  1    2    3    4    5
0  1  2  NaN  NaN  NaN  NaN
1  3  4  1.0  2.0  NaN  NaN
2  5  6  3.0  4.0  1.0  2.0
3  7  8  5.0  6.0  3.0  4.0