Как создать диапазон дат в Python от определенной даты до другой с интервалом в 6 месяцев? - PullRequest
2 голосов
/ 30 сентября 2019

Мне нужно создать диапазон дат от '2014-07-05' до '2024-07-05' с интервалом в 6 месяцев, '2014-07-05', '2015-01-05', '2015-07-05' .... Я использую pd.date_range('2014-07-05', '2024-07-05', freq = '6M'), но выходные данные не соответствуют моим датам,оно начинается с '2014-07-31' вместо '2014-07-05'. Я прочитал документацию, но не могу найти решение.

Я пытаюсь использовать pd.date_range, потому что это более прямой способ создания диапазона.

import pandas as pd

mydates = pd.date_range('2014-07-05', '2024-07-05', freq = '6M')

Я ожидаю:

DatetimeIndex(['2014-07-05', '2015-01-05', '2015-07-05',...,'2024-01-05','2024-07-05'],dtype='datetime64[ns]', freq='6M')

Я получаю:

DatetimeIndex(['2014-07-31', '2015-01-31', '2015-07-31', '2016-01-31',
               '2016-07-31', '2017-01-31', '2017-07-31', '2018-01-31',
               '2018-07-31', '2019-01-31', '2019-07-31', '2020-01-31',
               '2020-07-31', '2021-01-31', '2021-07-31', '2022-01-31',
               '2022-07-31', '2023-01-31', '2023-07-31', '2024-01-31'],
              dtype='datetime64[ns]', freq='6M')

1 Ответ

1 голос
/ 30 сентября 2019

Если я правильно понимаю ваш вопрос, этот код для вас:

from datetime import datetime
import pandas as pd

start = datetime.strptime('2014-07-05', '%Y-%m-%d')
end = datetime.strptime('2024-07-05', '%Y-%m-%d') + pd.offsets.MonthBegin()

mydate = pd.date_range(start, end,freq='6M') 
mydate -= pd.offsets.Day(mydate[0].day - start.day)

и дает:

DatetimeIndex(['2014-07-05', '2015-01-05', '2015-07-05', '2016-01-05',
           '2016-07-05', '2017-01-05', '2017-07-05', '2018-01-05',
           '2018-07-05', '2019-01-05', '2019-07-05', '2020-01-05',
           '2020-07-05', '2021-01-05', '2021-07-05', '2022-01-05',
           '2022-07-05', '2023-01-05', '2023-07-05', '2024-01-05',
           '2024-07-05'],
          dtype='datetime64[ns]', freq=None)

Что касается вашего кода, я подготовил 2 вещи:

  1. Я добавил 1 месяц к end дате, чтобы включить значение в диапазон, который ранее был исключен

  2. Я добавилправильное смещение mydate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...