# import necessary libraries
import numpy as np
import pandas as pd
# define input series & stride
series = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
stride_len = 3
overlap = 2
# create a view of the original data with overlapping strides
shape = (len(series) - stride_len + 1, stride_len)
strides = (series.values.strides[0] * (stride_len - overlap),
series.values.strides[0])
strided_data = np.lib.stride_tricks.as_strided(series,
shape = shape, strides = strides)
# create a DataFrame from the strided data
df = pd.DataFrame(strided_data,
columns=[f'col{i+1}'
for i in range(stride_len)])
# print the DataFrame
print(df)