2017-05-17 12 views
1

以前はStataでしか働いていませんでしたが、今はPythonに切り替えることを試みています。私はイベントスタディをしたい。具体的には、私は年に4つの固定日を持っています。毎四半期ごとに、たとえば毎日1月1日、4月1日...、およびイベントウィンドウ+ - イベント日の前後10日。私は、次のコマンドを使用しています目的のウィンドウに自分のサンプルを分割するために:Pythonで日付をループする

smpl = merged.ix[datetime.date(year=2013,month=12,day=21):datetime.date(year=2014,month=1,day=10)] 

を私は私ができるように、自動的にループの実行ごとに90日間前方選びだしサンプル期間をシフトループを書きたいですその後、そのステップで必要な分析を実行します。分析を実行する方法はわかっていますが、ループのすべてのステップでサンプルを90日先にシフトする方法はわかりません。例えば、ループの次のサンプルでは、​​次のようになります。

smpl = merged.ix[datetime.date(year=2014,month=3,day=21):datetime.date(year=2014,month=4,day=10)] 

そのおそらく非常に簡単、そして月= Iのようなものとは、毎月3だけシフト。私は、構文を完成させるために、Pythonのnoobのほんの一部です。 何か助けていただければ幸いです。

答えて

1

私はこれを使用すると思います:

for beg in pd.date_range('2013-12-21', '2017-05-17', freq='90D'): 
    smpl = merged.loc[beg:beg + pd.Timedelta('20D')] 
    ... 

デモ:

In [158]: for beg in pd.date_range('2013-12-21', '2017-05-17', freq='90D'): 
    ...:  print(beg, beg + pd.Timedelta('20D')) 
    ...: 
2013-12-21 00:00:00 2014-01-10 00:00:00 
2014-03-21 00:00:00 2014-04-10 00:00:00 
2014-06-19 00:00:00 2014-07-09 00:00:00 
2014-09-17 00:00:00 2014-10-07 00:00:00 
2014-12-16 00:00:00 2015-01-05 00:00:00 
2015-03-16 00:00:00 2015-04-05 00:00:00 
2015-06-14 00:00:00 2015-07-04 00:00:00 
2015-09-12 00:00:00 2015-10-02 00:00:00 
2015-12-11 00:00:00 2015-12-31 00:00:00 
2016-03-10 00:00:00 2016-03-30 00:00:00 
2016-06-08 00:00:00 2016-06-28 00:00:00 
2016-09-06 00:00:00 2016-09-26 00:00:00 
2016-12-05 00:00:00 2016-12-25 00:00:00 
2017-03-05 00:00:00 2017-03-25 00:00:00