Создайте новые столбцы, сдвинутые по времени на 30-дневный период задержки, а затем запустите метод corr для этих столбцов.
df_shifted = df_sales.shift(periods=30)
df_shifted.columns = ['Item01_30','Item02_30','Item03_30','Item04_30']
сместит все записи на 30 строк и оставит значения NaN в наблюдениях 0-29.Затем добавьте 30 значений NaN в конец исходного кадра данных:
empty_row = pd.Series([Nan,Nan,Nan,Nan], index=['Item01','Item02','Item03','Item04'])
for i in range(30):
df_sales = df_sales.append(empty_row)
Затем объедините df_shifted и df_sales в один кадр данных:
frames = [df_sales, df_shifted]
df_sales_with_shift = pd.concat(frames, axis=1)
Запустите метод corr только для строк, которыене имеют значений NaN:
df_sales_with_shift[30:len(df_sales_with_shift.index)-30].corr(method ='pearson')
Это потребует от вас сокращения набора данных на количество периодов времени, которые вы выбираете для смещения, поэтому в зависимости от размера выборки вам может потребоваться позаботиться о том, чтобыне выбирайте слишком длинный период времени.