パンダには、これを自動的に処理する非常に優れた営業日機能が組み込まれています。この正確な問題については、実際にはもう少しコードが長くなりますが、はるかに一般的なケースを非常に簡単に処理できます。
In [1]: ind = pd.date_range('2008-06-02', '2008-06-12', freq='B')
In [2]: p = pd.Series(np.random.random(len(ind)), index=ind)
In [3]: p
Out[3]:
2008-06-02 0.606132
2008-06-03 0.328327
2008-06-04 0.842873
2008-06-05 0.272547
2008-06-06 0.013640
2008-06-09 0.357935
2008-06-10 0.517029
2008-06-11 0.992851
2008-06-12 0.053158
Freq: B, dtype: float64
In [4]: t0 = pd.Timestamp('2008-6-6')
In [5]: from pandas.tseries import offsets
In [6]: delta = offsets.BDay(2)
これにより、2 営業日のオフセットが作成されます。他の時間単位の任意のオフセット、または時間単位の組み合わせを作成することもできます。開始点とデルタを使用すると、標準的な方法でインテリジェントにスライスできます。
In [7]: p[t0 - delta:t0 + delta]
Out[7]:
2008-06-04 0.842873
2008-06-05 0.272547
2008-06-06 0.013640
2008-06-09 0.357935
2008-06-10 0.517029
Freq: B, dtype: float64
このアプローチの良い点は、間隔が行数にリンクされていないことです。したがって、たとえば、1 時間ごとのデータと欠落しているポイントがある場合でも、まったく同じ方法で 2 営業日を把握できます。または、データ ソースに週末のデータも含まれているが、それでも +/- 2 営業日が必要な場合。