 s=pd.Series([5,4,3,2,1], index=[1,2,3,4,5], name='test') shiftdf=pd.DataFrame() for i in range(3): shiftdf = pd.concat([shiftdf , s.shift(i).rename(s.name+'_'+str(i))], axis=1) shiftdf >> test_0 test_1 test_2 1 5 NaN NaN 2 4 5.0 NaN 3 3 4.0 5.0 4 2 3.0 4.0 5 1 2.0 3.0