About this deal
BUSINESS_DATE = "[Previous (" + DAY_NAME[YESTERDAY.weekday()] + "):'" + YESTERDAY.strftime('%y%m%d') Cell In [ 489 ], line 1 ----> 1 dti . tz_localize ( 'Europe/Warsaw' ) File ~/work/pandas/pandas/pandas/core/indexes/datetimes.py:291, in DatetimeIndex.tz_localize (self, tz, ambiguous, nonexistent) 284 @doc ( DatetimeArray . tz_localize ) 285 def tz_localize ( 286 self , ( ... ) 289 nonexistent : TimeNonexistent = "raise" , 290 ) -> Self : --> 291 arr = self . _data . tz_localize ( tz , ambiguous , nonexistent ) 292 return type ( self ) . _simple_new ( arr , name = self . name ) File ~/work/pandas/pandas/pandas/core/arrays/_mixins.py:80, in ravel_compat.
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 [76]: start = datetime . datetime ( 2011 , 1 , 1 ) In [77]: end = datetime . datetime ( 2012 , 1 , 1 ) In [78]: index = pd . date_range ( start , end ) In [79]: index Out[79]: DatetimeIndex(['2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05', '2011-01-06', '2011-01-07', '2011-01-08', '2011-01-09', '2011-01-10', ... '2011-12-23', '2011-12-24', '2011-12-25', '2011-12-26', '2011-12-27', '2011-12-28', '2011-12-29', '2011-12-30', '2011-12-31', '2012-01-01'], dtype='datetime64[ns]', length=366, freq='D') In [80]: index = pd . bdate_range ( start , end ) In [81]: index Out[81]: 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-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]', length=260, freq='B')TypeError: unbound method holidays() must be called with TradingCalendar instance as first argument (got datetime instance instead) In [236]: dates_lst_1 = pd . date_range ( "2020-01-06" , "2020-04-03" , freq = "MS" ) In [237]: dates_lst_1 Out[237]: DatetimeIndex(['2020-02-01', '2020-03-01', '2020-04-01'], dtype='datetime64[ns]', freq='MS') In [238]: dates_lst_2 = pd . date_range ( "2020-01-01" , "2020-04-01" , freq = "MS" ) In [239]: dates_lst_2 Out[239]: DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01'], dtype='datetime64[ns]', freq='MS') 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 In [379]: idx = pd . period_range ( "2014-07-01 09:00" , periods = 5 , freq = "H" ) In [380]: idx Out[380]: PeriodIndex(['2014-07-01 09:00', '2014-07-01 10:00', '2014-07-01 11:00', '2014-07-01 12:00', '2014-07-01 13:00'], dtype='period[H]') In [381]: idx + pd . offsets . Hour ( 2 ) Out[381]: PeriodIndex(['2014-07-01 11:00', '2014-07-01 12:00', '2014-07-01 13:00', '2014-07-01 14:00', '2014-07-01 15:00'], dtype='period[H]') In [382]: idx = pd . period_range ( "2014-07" , periods = 5 , freq = "M" ) In [383]: idx Out[383]: PeriodIndex(['2014-07', '2014-08', '2014-09', '2014-10', '2014-11'], dtype='period[M]') In [384]: idx + pd . offsets . MonthEnd ( 3 ) Out[384]: PeriodIndex(['2014-10', '2014-11', '2014-12', '2015-01', '2015-02'], dtype='period[M]') In certain countries, such as the United States, there are laws ( Uniform Monday Holiday Act of 1968), whose rules are included in Pandas, print(USFederalHolidayCalendar.rules) as an example for developing other calendars.
will increment datetimes to the same time the next day whether a day represents 23, 24 or 25 hours due to daylightThe bins of the grouping are adjusted based on the beginning of the day of the time series starting point. This works well with frequencies that are multiples of a day (like 30D) or that divide a day evenly (like 90s or 1min). This can create inconsistencies with some frequencies that do not meet this criteria. To change this behavior you can specify a fixed Timestamp with the argument origin.
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 #under the default business hours (9:00 - 17:00), there is no gap (0 minutes) between 2014-08-01 17:00 and is similar to a Timedelta that represents a duration of time but follows specific calendar duration rules. For time series data, it’s conventional to represent the time component in the index of a Series or DataFrame In [204]: bh = pd . offsets . BusinessHour () In [205]: bh Out[205]: