2017-12-24 7 views
0

私は、複数の時系列変数を持つデータフレームdfを持っています。変数 'A'、 'B'、 'C​​'などと答えてください。pandas:ループ内の既存変数の遅れた変数を作成する

インデックスとして日付があります。ループで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

これを試してみてください:

lag = [3,6,12] 

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

ます。また、それはうまくいきませんでした

from itertools import product 

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

すなわちitertools productを使用することができ、私はKeyError例外を取得しています: – Zenvega

+0

あなたがいることを、データフレームの再現性のあるコードを投稿することができます私はコードをテストするために使用できますか? –

+0

@Zenvegaこの回答は良いです。 – Dark

関連する問題