您可以使用字典理解功能创建其他列,然后通过将它们添加到数据框中assign
。
df = pd.DataFrame(np.random.randn(5, 2), columns=list('AB'))
lags = range(1, 3) # Just two lags for demonstration.
>>> df.assign(**{
'{} (t-{})'.format(col, t): df[col].shift(t)
for t in lags
for col in df
})
A B A (t-1) A (t-2) B (t-1) B (t-2)
0 -0.773571 1.945746 NaN NaN NaN NaN
1 1.375648 0.058043 -0.773571 NaN 1.945746 NaN
2 0.727642 1.802386 1.375648 -0.773571 0.058043 1.945746
3 -2.427135 -0.780636 0.727642 1.375648 1.802386 0.058043
4 1.542809 -0.620816 -2.427135 0.727642 -0.780636 1.802386