예제 #1
0
    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)
예제 #2
0
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