Проблема с использованием pd.tseries.offsets.CustomBusinessDay для поиска дат из DatetimeIndex - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть серия панд (с индексом, являющимся датами), и я пытаюсь извлечь даты с регулярным интервалом (365 дней) из этой серии.Для простоты я использую CustomBusinessDay.Казалось, что это работает нормально, но для одного конкретного примера это не помогло, что, вероятно, я не совсем понял, как это работает.

Вот что я делаю:

У меня есть серия "Тест":

test
Out[29]: 
2008-04-02    0.006084
2008-04-03   -0.002923
2008-04-04    0.002602

и т. Д.

более конкретно здесь, гдепроблема возникает:

test[512:516]
Out[31]: 
2010-03-30   -0.002650
2010-03-31   -0.002898
2010-04-01    0.016151
2010-04-06    0.003690
dtype: float64

Я создал пользовательский рабочий день, используя исходный индекс, и создал диапазон дат с частотой 365D и добавил 0*CustCal, чтобы получить даты, которые являются частью исходного индекса:

CustCal=pd.tseries.offsets.CustomBusinessDay(calendar=test.index)
tempRestrikeDates = pd.date_range(start=test.index[0], end=test.index[-1], freq='365D')+0*CustCal

Однако, как видно из результатов ниже, '2010-04-02' является частью tempRestrikeDates, но не входит в исходный индекс теста.

tempRestrikeDates
Out[35]: 
DatetimeIndex(['2008-04-02', '2009-04-02', '2010-04-02', '2011-04-04',
               '2012-04-02', '2013-04-01', '2014-04-01', '2015-04-01',
               '2016-03-31', '2017-03-31', '2018-04-02', '2019-04-01'],
              dtype='datetime64[ns]', freq=None)

Есть ли что-то, в чем я ошибся при использовании CustomBusinessDay и добавлении 0*CustCal, чтобы получить дату, являющуюся частью CustCal?

Есть ли другой эффективный способ добиться этого??

Результаты должны быть:

tempRestrikeDates
Out[35]: 
DatetimeIndex(['2008-04-02', '2009-04-02', '2010-04-01', '2011-04-04',
               '2012-04-02', '2013-04-01', '2014-04-01', '2015-04-01',
               '2016-03-31', '2017-03-31', '2018-04-02', '2019-04-01'],
              dtype='datetime64[ns]', freq=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...