2017-03-13 3 views
2

日付インデックスと100列の株価を持つpandasデータフレームがあります。列内の値が変更され、パンダを使用して前方入力が行われると要素が2ずつシフトします

価格の変更があった場合、2の遅れがあり、その後、順方向の充填が行われた後に、それぞれの在庫が欲しいです。 2列(私のデータのサブセット)の

例えばデータ:

  Stock A Stock B 
1/1/2000 100 50 
1/2/2000 100 50 
1/3/2000 100 50 
1/4/2000 350 50 
1/5/2000 350 50 
1/6/2000 350 50 
1/7/2000 350 25 
1/8/2000 350 25 
1/9/2000 500 25 
1/10/2000 500 25 
1/11/2000 500 25 
1/12/2000 500 150 
1/1/2001 250 150 
1/2/2001 250 150 
1/3/2001 250 150 
1/4/2001 250 150 
1/5/2001 250 150 
1/6/2001 250 150 
1/7/2001 250 150 
1/8/2001 75 150 
1/9/2001 75 150 
1/10/2001 75 25 
1/11/2001 75 25 
1/12/2001 75 25 
1/1/2002 75 25 

は、今私が望む出力はこれです:株式Aの

Stock A Stock B 
1/1/2000   
1/2/2000   
1/3/2000   
1/4/2000   
1/5/2000 100 
1/6/2000 100 
1/7/2000 100 
1/8/2000 100 50 
1/9/2000 100 50 
1/10/2000 350 50 
1/11/2000 350 50 
1/12/2000 350 50 
1/1/2001 350 25 
1/2/2001 500 25 
1/3/2001 500 25 
1/4/2001 500 25 
1/5/2001 500 25 
1/6/2001 500 25 
1/7/2001 500 25 
1/8/2001 500 25 
1/9/2001 250 25 
1/10/2001 250 25 
1/11/2001 250 150 
1/12/2001 250 150 
1/1/2002 250 150 

例:

株式A (100〜350)、前回値(100)が2日先(1/5/200)に割り当てられました。その後、350から500に変更されたとき、350は2日先(1/10/2000)などに割り当てられ、その後、前方充填が行われます。

ご協力いただければ幸いです。

答えて

1
df.where(df.diff(-1).fillna(0).ne(0)).shift(2).ffill() 

       A  B 
2000-01-01 NaN NaN 
2000-02-01 NaN NaN 
2000-03-01 NaN NaN 
2000-04-01 NaN NaN 
2000-05-01 100.0 NaN 
2000-06-01 100.0 NaN 
2000-07-01 100.0 NaN 
2000-08-01 100.0 50.0 
2000-09-01 100.0 50.0 
2000-10-01 350.0 50.0 
2000-11-01 350.0 50.0 
2000-12-01 350.0 50.0 
2001-01-01 350.0 25.0 
2001-02-01 500.0 25.0 
2001-03-01 500.0 25.0 
2001-04-01 500.0 25.0 
2001-05-01 500.0 25.0 
2001-06-01 500.0 25.0 
2001-07-01 500.0 25.0 
2001-08-01 500.0 25.0 
2001-09-01 250.0 25.0 
2001-10-01 250.0 25.0 
2001-11-01 250.0 150.0 
2001-12-01 250.0 150.0 
2002-01-01 250.0 150.0 
関連する問題