Если ваш фрейм данных имеет форму (100000, 10), вы не можете изменить его на (100000, 5, 10) просто потому, что в нем нет значений 100000x5x10.Итак, первым шагом является создание отстающих функций:
> df = pd.DataFrame({'a':[i for i in range(5)], 'b':[i for i in range(5, 10)]})
> df
> a b
0 0 5
1 1 6
2 2 7
3 3 8
4 4 9
> columns = [df.shift(i) for i in range()]
> df = pd.concat(columns, axis=1)
> df
> a b a b a b
0 0 5 NaN NaN NaN NaN
1 1 6 0.0 5.0 NaN NaN
2 2 7 1.0 6.0 0.0 5.0
3 3 8 2.0 7.0 1.0 6.0
4 4 9 3.0 8.0 2.0 7.0
После этого вы можете изменить форму вашего фрейма данных в соответствии с вашими потребностями:
> # 5 samples, 3 timesteps, 2 features
> df.values.reshape(5,3,2)
> array([[[ 0., 5.],
[nan, nan],
[nan, nan]],
[[ 1., 6.],
[ 0., 5.],
[nan, nan]],
...