팬더를 사용하고 있습니다. 팬더를 사용하여 시작일과 종료일 사이에 영업일을 얻는 가장 쉬운 방법이 궁금합니다.팬더를 사용하여 시작일과 종료일의 영업일을 확인하십시오
Python (example)에서이 작업을 수행하는 것과 관련하여 많은 게시물이 있지만 판다 (pandas)가 아마도 이것을 매우 쉽게 처리 할 수 있다고 생각하기 때문에 팬더를 직접 사용하는 데 관심이 있습니다.
팬더를 사용하고 있습니다. 팬더를 사용하여 시작일과 종료일 사이에 영업일을 얻는 가장 쉬운 방법이 궁금합니다.팬더를 사용하여 시작일과 종료일의 영업일을 확인하십시오
Python (example)에서이 작업을 수행하는 것과 관련하여 많은 게시물이 있지만 판다 (pandas)가 아마도 이것을 매우 쉽게 처리 할 수 있다고 생각하기 때문에 팬더를 직접 사용하는 데 관심이 있습니다.
범위의 영업일을 얻으려면 BDay()
을 사용하십시오. 슬라이스와
from pandas.tseries.offsets import *
In [185]: s
Out[185]:
2011-01-01 -0.011629
2011-01-02 -0.089666
2011-01-03 -1.314430
2011-01-04 -1.867307
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-08 0.800262
2011-01-09 0.376406
2011-01-10 -0.469988
Freq: D
In [186]: s.asfreq(BDay())
Out[186]:
2011-01-03 -1.314430
2011-01-04 -1.867307
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-10 -0.469988
Freq: B
:
In [187]: x=datetime(2011, 1, 5)
In [188]: y=datetime(2011, 1, 9)
In [189]: s.ix[x:y]
Out[189]:
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
2011-01-08 0.800262
2011-01-09 0.376406
Freq: D
In [190]: s.ix[x:y].asfreq(BDay())
Out[190]:
2011-01-05 0.779609
2011-01-06 0.588950
2011-01-07 -2.505803
Freq: B
및 count()
In [191]: s.ix[x:y].asfreq(BDay()).count()
Out[191]: 3
또한이 목적을 위해 date_range
를 사용할 수 있습니다. 모두 시작 및 종료 날짜를 포함하는 것을
In [3]: pd.date_range('2011-01-05', '2011-01-09', freq=BDay())
Out[3]: DatetimeIndex(['2011-01-05', '2011-01-06', '2011-01-07'], dtype='datetime64[ns]', freq='B', tz=None)
편집
심지어 더 간단
In [7]: pd.bdate_range('2011-01-05', '2011-01-09')
Out[7]: DatetimeIndex(['2011-01-05', '2011-01-06', '2011-01-07'], dtype='datetime64[ns]', freq='B', tz=None)
참고. 출처 : bdate_range 또는 BDay()를 사용하는 경우 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.bdate_range.html
그냥 조심 - 이름이이 일의 범위를 현실에 즉 밖으로 제거 주말 (그냥 일입니다 반면이라고 생각하는 당신을 오해 할 수는. 휴일을 고려하지 않음).
v0.14부터 휴일 캘린더를 사용할 수 있습니다.
from pandas.tseries.holiday import USFederalHolidayCalendar from pandas.tseries.offsets import CustomBusinessDay us_bd = CustomBusinessDay(calendar=USFederalHolidayCalendar()) print pd.DatetimeIndex(start='2010-01-01',end='2010-01-15', freq=us_bd)
반환 :
DatetimeIndex(['2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07', '2010-01-08', '2010-01-11', '2010-01-12', '2010-01-13', '2010-01-14', '2010-01-15'], dtype='datetime64[ns]', freq='C')
날짜 범위 사이의 날짜 수를 원하면 'pd.DatetimeIndex (시작 ='2010-01-01 ', 끝 ='2010-01-15 ', freq = us_bd)로 가져올 수 있습니다. .shape [ 0]' – tsando
와우 .. 딱! 고마워요! –