팬더는이 작업을 자동으로 처리 할 수 있다는 점에서 내장 꽤 좋은 영업일 기능이 있습니다. 이 정확한 문제에 대해, 실제로는 더 많은 코드가 끝나지 만 훨씬 더 일반적인 경우를 매우 쉽게 처리 할 것입니다.
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
이 방법의 좋은 점은 간격이 행의 수에 연결되지 않는 것입니다. 따라서 예를 들어 시간별 데이터와 누락 된 점이있는 경우에도 정확히 같은 방식으로 2 영업일을 캡처 할 수 있습니다. 또는 데이터 소스에 주말 데이터가있는 경우에도 여전히 영업일 기준으로 +/- 2 일이 필요했습니다.