def test_dekad_index(self): firstdate = datetime(2000, 1, 10) lastdate = datetime(2000, 3, 20) items = 8 dkindex = dk.dekad_index(self.begin, self.end) assert dkindex[0] == firstdate assert dkindex[-1] == lastdate assert dkindex.size == items dkindex = dk.dekad_index(self.begin) assert dkindex[0] == firstdate assert (dkindex[-1] - dk.check_dekad(datetime.now())).days == 0 dkindex = dk.dekad_index(datetime(2014, 1, 3), datetime(2014, 1, 5)) assert dkindex[0] == datetime(2014, 1, 10) assert dkindex.size == 1 dkindex = dk.dekad_index(datetime(2014, 1, 3), datetime(2014, 1, 15)) assert dkindex[0] == datetime(2014, 1, 10) assert dkindex[1] == datetime(2014, 1, 20) dkindex = dk.dekad_index(datetime(2014, 1, 3), datetime(2014, 1, 25)) assert dkindex[0] == datetime(2014, 1, 10) assert dkindex[2] == datetime(2014, 1, 31) dkindex = dk.dekad_index(datetime(2014, 1, 13), datetime(2014, 1, 15)) assert dkindex[0] == datetime(2014, 1, 20) assert dkindex.size == 1 dkindex = dk.dekad_index(datetime(2014, 1, 13), datetime(2014, 1, 25)) assert dkindex[0] == datetime(2014, 1, 20) assert dkindex[1] == datetime(2014, 1, 31) dkindex = dk.dekad_index(datetime(2014, 1, 23), datetime(2014, 1, 25)) assert dkindex[0] == datetime(2014, 1, 31) assert dkindex.size == 1 dkindex = dk.dekad_index(datetime(2014, 1, 3), datetime(2014, 3, 5)) assert dkindex[0] == datetime(2014, 1, 10) assert dkindex[-1] == datetime(2014, 3, 10) dkindex = dk.dekad_index(datetime(2014, 1, 13), datetime(2014, 3, 25)) assert dkindex[0] == datetime(2014, 1, 20) assert dkindex[-1] == datetime(2014, 3, 31)
def get_dtindex(interval, begin, end=None): """Creates a pandas datetime index for a given interval. Parameters ---------- interval : str or int Interval of the datetime index. Integer values will be treated as days. begin : datetime Datetime index start date. end : datetime, optional Datetime index end date, defaults to current date. Returns ------- dtindex : pandas.tseries.index.DatetimeIndex Datetime index. """ if end is None: end = datetime.now() if interval in ['dekad', 'dekadal', 'decadal', 'decade']: dtindex = dekad_index(begin, end) elif interval in ['daily', 'day', '1']: dtindex = pd.date_range(begin, end, freq='D') elif interval in ['weekly', 'week', '7']: begin2 = begin - timedelta(begin.weekday()) + timedelta(6) dtindex = pd.date_range(begin2, end, freq='7D') elif interval in ['monthly', 'month']: lday = calendar.monthrange(end.year, end.month)[1] end = datetime(end.year, end.month, lday) dtindex = pd.date_range(begin, end, freq='M') if type(interval) is int: dtindex = pd.date_range(begin, end, freq=str(str(interval) + 'D')) return dtindex