About this deal
passing ` format ` if your strings have a consistent format ; - passing ` format = 'ISO8601' ` if your strings are all ISO8601 but not necessarily in exactly the same format ; - passing ` format = 'mixed' ` , and the format will be inferred for each element individually . You might want to use ` dayfirst ` alongside this . This particular day contains a day light savings time transition In [146]: ts = pd . Timestamp ( "2016-10-30 00:00:00" , tz = "Europe/Helsinki" ) # Respects absolute time In [147]: ts + pd . Timedelta ( days = 1 ) Out[147]: Timestamp('2016-10-30 23:00:00+0200', tz='Europe/Helsinki') # Respects calendar time In [148]: ts + pd . DateOffset ( days = 1 ) Out[148]: Timestamp('2016-10-31 00:00:00+0200', tz='Europe/Helsinki') In [149]: friday = pd . Timestamp ( "2018-01-05" ) In [150]: friday . day_name () Out[150]: 'Friday' # Add 2 business days (Friday --> Tuesday) In [151]: two_business_days = 2 * pd . offsets . BDay () In [152]: friday + two_business_days Out[152]: Timestamp('2018-01-09 00:00:00') In [153]: ( friday + two_business_days ) . day_name () Out[153]: 'Tuesday' In [143]: idx = pd . date_range ( start = "2019-12-29" , freq = "D" , periods = 4 ) In [144]: idx . isocalendar () Out[144]: year week day 2019-12-29 2019 52 7 2019-12-30 2020 1 1 2019-12-31 2020 1 2 2020-01-01 2020 1 3 In [145]: idx . to_series () . dt . isocalendar () Out[145]: year week day 2019-12-29 2019 52 7 2019-12-30 2020 1 1 2019-12-31 2020 1 2 2020-01-01 2020 1 3 DateOffset objects #
def __add__ ( date ): date = rollforward ( date ) # does nothing if date is valid return date + < n number of periods >
will increment datetimes to the same time the next day whether a day represents 23, 24 or 25 hours due to daylight Holiday: New Years Day (month=1, day=1, observance=
I'm trying to create a Trading calendar using Pandas. I'm able to create a cal instance based on the USFederalHolidayCalendar. The USFederalHolidayCalendar is not consistent with the Trading calendar in that the Trading calendar doesn't include Columbus Day and Veteran's Day. However, the Trading calendar includes Good Friday (not included in the USFederalHolidayCalendar). Everything except for the last line in following code works: from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday BUSINESS_DATE += "', Next (" + DAY_NAME[TOMORROW.weekday()] + "):'" + TOMORROW.strftime('%y%m%d') + "']" In [84]: pd . date_range ( start , end , freq = "BM" ) Out[84]: DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-29', '2011-05-31', '2011-06-30', '2011-07-29', '2011-08-31', '2011-09-30', '2011-10-31', '2011-11-30', '2011-12-30'], dtype='datetime64[ns]', freq='BM') In [85]: pd . date_range ( start , end , freq = "W" ) Out[85]: DatetimeIndex(['2011-01-02', '2011-01-09', '2011-01-16', '2011-01-23', '2011-01-30', '2011-02-06', '2011-02-13', '2011-02-20', '2011-02-27', '2011-03-06', '2011-03-13', '2011-03-20', '2011-03-27', '2011-04-03', '2011-04-10', '2011-04-17', '2011-04-24', '2011-05-01', '2011-05-08', '2011-05-15', '2011-05-22', '2011-05-29', '2011-06-05', '2011-06-12', '2011-06-19', '2011-06-26', '2011-07-03', '2011-07-10', '2011-07-17', '2011-07-24', '2011-07-31', '2011-08-07', '2011-08-14', '2011-08-21', '2011-08-28', '2011-09-04', '2011-09-11', '2011-09-18', '2011-09-25', '2011-10-02', '2011-10-09', '2011-10-16', '2011-10-23', '2011-10-30', '2011-11-06', '2011-11-13', '2011-11-20', '2011-11-27', '2011-12-04', '2011-12-11', '2011-12-18', '2011-12-25', '2012-01-01'], dtype='datetime64[ns]', freq='W-SUN') In [86]: pd . bdate_range ( end = end , periods = 20 ) Out[86]: DatetimeIndex(['2011-12-05', '2011-12-06', '2011-12-07', '2011-12-08', '2011-12-09', '2011-12-12', '2011-12-13', '2011-12-14', '2011-12-15', '2011-12-16', '2011-12-19', '2011-12-20', '2011-12-21', '2011-12-22', '2011-12-23', '2011-12-26', '2011-12-27', '2011-12-28', '2011-12-29', '2011-12-30'], dtype='datetime64[ns]', freq='B') In [87]: pd . bdate_range ( start = start , periods = 20 ) Out[87]: DatetimeIndex(['2011-01-03', '2011-01-04', '2011-01-05', '2011-01-06', '2011-01-07', '2011-01-10', '2011-01-11', '2011-01-12', '2011-01-13', '2011-01-14', '2011-01-17', '2011-01-18', '2011-01-19', '2011-01-20', '2011-01-21', '2011-01-24', '2011-01-25', '2011-01-26', '2011-01-27', '2011-01-28'], dtype='datetime64[ns]', freq='B')
By having trial and error, I could only find the correct output by combining the method as below: from datetime import datetime, timedelta