Вот одно решение, использующее понимание списка с enumerate
:
df = pd.DataFrame.from_dict({'Look_back_period': {0: 1, 1: 1, 2: 2, 3: 2, 4: 3, 5: 4, 6: 6},
'Sales': {0: 100, 1: 102, 2: 103, 3: 108, 4: 100, 5: 90, 6: 97}})
df['lage_sales'] = [np.nan] + [df['Sales'].iat[i-j] for i, j in \
enumerate(df['Look_back_period'].iloc[1:], 1)]
print(df)
Sales Look_back_period lage_sales
0 100 1 NaN
1 102 1 100.0
2 103 2 100.0
3 108 2 102.0
4 100 3 102.0
5 90 4 102.0
6 97 6 100.0