У меня есть 600 столбцов данных, который составляет приблизительно 1 000 000 строк.Все ячейки с плавающей точкой32.
Мне нужно перемещать скользящее окно (длина 30) по кадрам данных по строкам, чтобы создать новую строку, которая объединяет их в окне.Это будет 600 * 30 == 18000
в ширину и приблизительно 1,000,000 - 30
в длину (строки).Из-за скользящего окна строки в исходном кадре данных дублируются (в зависимости от проекта).
Ниже приведен примерный ( непроверенный ) код для обобщения требований.На самом деле я бы выделил пустой массив правильной длины вместо списка Xy_hist = []
python.
# tmp is the large df already defined
total_size = tmp.shape[0]
window_size = 30
Xy_hist = []
for x in range(total_size-window_size):
tmp_df = tmp.iloc[0+x:window_size+x,:].stack().to_frame().T
tmp_df.columns = tmp_df.columns.get_level_values(1)
Xy_hist.append(tmp_df)
res = pd.concat(Xy_hist)
Я считаю, что этот подход очень неэффективен в памяти и, вероятно, неэффективен в вычислительном отношении.Есть ли лучший более питонический и / или нативный подход панд для решения этой проблемы?