Closed
Description
from pandas.tseries.holiday import Holiday, nearest_workday, get_calendar, HolidayCalendarFactory, USPresidentsDay, \
USMemorialDay, USLaborDay, USThanksgivingDay, AbstractHolidayCalendar, USFederalHolidayCalendar
from pandas.util.print_versions import show_versions
>>> show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.4.3.final.0
python-bits: 64
OS: Linux
OS-release: 3.13.0-24-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
pandas: 0.16.2
nose: 1.3.4
Cython: None
numpy: 1.9.1
scipy: None
statsmodels: None
IPython: 4.0.0
sphinx: None
patsy: None
dateutil: 2.2
pytz: 2013.9
bottleneck: None
tables: None
numexpr: None
matplotlib: 1.3.1
openpyxl: 2.1.4
xlrd: None
xlwt: None
xlsxwriter: None
lxml: 3.4.4
bs4: 4.3.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 0.9.7
pymysql: None
psycopg2: 2.4.6 (dt dec pq3 ext)
>>> class MyCalendar(AbstractHolidayCalendar):
rules = [
Holiday("New Years Day", month=1, day=1, observance=nearest_workday),
USPresidentsDay,
USMemorialDay,
Holiday("Independence Day", month=7, day=4, observance=nearest_workday),
USLaborDay,
Holiday("Veterans Day", month=11, day=11, observance=nearest_workday),
USThanksgivingDay,
Holiday("Christmas", month=12, day=25, observance=nearest_workday)
]
>>> cal = MyCalendar()
>>> cal.rules
[Holiday: New Years Day (month=1, day=1, observance=<function nearest_workday at 0x7f6dbbfd5bf8>),
Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
Holiday: MemorialDay (month=5, day=24, offset=<DateOffset: kwds={'weekday': MO(+1)}>),
Holiday: Independence Day (month=7, day=4, observance=<function nearest_workday at 0x7f6dbbfd5bf8>),
Holiday: Labor Day (month=9, day=1, offset=<DateOffset: kwds={'weekday': MO(+1)}>),
Holiday: Veterans Day (month=11, day=11, observance=<function nearest_workday at 0x7f6dbbfd5bf8>),
Holiday: Thanksgiving (month=11, day=1, offset=<DateOffset: kwds={'weekday': TH(+4)}>),
Holiday: Christmas (month=12, day=25, observance=<function nearest_workday at 0x7f6dbbfd5bf8>)]
#this works as expected, but isn't in the documentation:
>>> cal.holidays(start='11/5/2014', end='11/4/2015')
DatetimeIndex(['2014-11-11', '2014-11-27', '2014-12-25', '2015-01-01',
'2015-02-16', '2015-05-25', '2015-07-03', '2015-09-07'],
dtype='datetime64[ns]', freq=None, tz=None)
#this is what the documentation says to do, and the results make no sense:
from pandas.tseries.offsets import CDay #docs don't actually say where CDay comes from, I had to dig that up myself
>>> oneyear = pd.DatetimeIndex(start='11/5/2014', end='11/4/2015', freq=CDay(calendar=cal)).to_pydatetime()
>>> oneyear
array([datetime.datetime(2014, 11, 5, 0, 0),
datetime.datetime(2014, 11, 6, 0, 0),
datetime.datetime(2014, 11, 7, 0, 0),
datetime.datetime(2014, 11, 10, 0, 0),
datetime.datetime(2014, 11, 11, 0, 0),
datetime.datetime(2014, 11, 12, 0, 0),
datetime.datetime(2014, 11, 13, 0, 0),
datetime.datetime(2014, 11, 14, 0, 0),
datetime.datetime(2014, 11, 17, 0, 0),
datetime.datetime(2014, 11, 18, 0, 0),
datetime.datetime(2014, 11, 19, 0, 0),
datetime.datetime(2014, 11, 20, 0, 0),
datetime.datetime(2014, 11, 21, 0, 0),
datetime.datetime(2014, 11, 24, 0, 0),
datetime.datetime(2014, 11, 25, 0, 0),
datetime.datetime(2014, 11, 26, 0, 0),
datetime.datetime(2014, 11, 27, 0, 0),
datetime.datetime(2014, 11, 28, 0, 0), etc.