pandas:在循环中创建现有变量的滞后变量

时间:2017-12-24 03:23:17

标签: python pandas

我有一个包含多个时间序列变量的数据帧df。说变量' A',' B'' C'等

有索引日期。如何在循环中创建3,6和12个月的滞后版本?我想我可以手动输入每个变量,如下所示,但希望有一个有效的方法来做到这一点。感谢。

df['A_3'] = df['A'].shift(3)
df['A_6'] = df['A'].shift(6)
df['A_12'] = df['A'].shift(12)

df['B_3'] = df['B'].shift(3)
df['B_6'] = df['B'].shift(6)
df['B_12'] = df['B'].shift(12)

1 个答案:

答案 0 :(得分:2)

试试这个:

lag = [3,6,12]

for col in df.columns:
    for l in lag:
        df.loc[:,col+"_"+str(l)] = df[col].shift(l)

您也可以使用itertools product

from itertools import product 

for col,lag  in product(df.columns,lags):
    df[col+'_'+str(lag)] = df[col].shift(lag)