Два списка datetimeIndex, хочу один список списков парных строк дат - PullRequest
1 голос
/ 24 марта 2020

В настоящее время у меня есть следующее

start_of_month_dates = pd.date_range('2018-01-01','2021-01-01' , freq='1M')-pd.offsets.MonthBegin(1)
end_of_month_dates = pd.date_range('2018-02-01', '2021-02-01' , freq='1M')-pd.offsets.MonthEnd(1)

, что приводит к

DatetimeIndex(['2018-01-01', '2018-02-01', '2018-03-01', '2018-04-01',
               '2018-05-01', '2018-06-01', '2018-07-01', '2018-08-01',
               '2018-09-01', '2018-10-01', '2018-11-01', '2018-12-01',
               '2019-01-01', '2019-02-01', '2019-03-01', '2019-04-01',
               '2019-05-01', '2019-06-01', '2019-07-01', '2019-08-01',
               '2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01',
               '2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01',
               '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
               '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01'],
              dtype='datetime64[ns]', freq='M')
DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31', '2018-04-30',
               '2018-05-31', '2018-06-30', '2018-07-31', '2018-08-31',
               '2018-09-30', '2018-10-31', '2018-11-30', '2018-12-31',
               '2019-01-31', '2019-02-28', '2019-03-31', '2019-04-30',
               '2019-05-31', '2019-06-30', '2019-07-31', '2019-08-31',
               '2019-09-30', '2019-10-31', '2019-11-30', '2019-12-31',
               '2020-01-31', '2020-02-29', '2020-03-31', '2020-04-30',
               '2020-05-31', '2020-06-30', '2020-07-31', '2020-08-31',
               '2020-09-30', '2020-10-31', '2020-11-30', '2020-12-31'],
              dtype='datetime64[ns]', freq='M')

Моя конечная цель для моего проекта - получить что-то вроде этого:

[['2018-01-01','2018-01-31'],['2018-02-01','2018-02-28'],...]

Пытаясь найти наиболее эффективный способ выполнить это.

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Это одно из решений: zip списки и итерация, используя strftime для получения дат в виде строк

  [[start.date().strftime('%Y-%m-%d'),
    end.date().strftime('%Y-%m-%d')
    ]
   for start,end 
   in zip(start_of_month_dates, 
          end_of_month_dates)
  ]

  [['2018-01-01', '2018-01-31'],
   ['2018-02-01', '2018-02-28'],
   ['2018-03-01', '2018-03-31'],
   ['2018-04-01', '2018-04-30'],
   ['2018-05-01', '2018-05-31'],
   ...]
1 голос
/ 24 марта 2020

Я не уверен, что мой подход эффективен, но я верю, что вы могли бы сделать:

start_of_month_dates = pd.date_range('2018-01-01','2021-01-01' , freq='1M')-pd.offsets.MonthBegin(1)
end_of_month_dates = pd.date_range('2018-02-01', '2021-02-01' , freq='1M')-pd.offsets.MonthEnd(1)

dates = []
for i in range(len(end_of_month_dates)):
...     dates.append([start_of_month_dates[i].strftime("%Y-%m-%d"), end_of_month_dates[i].strftime("%Y-%m-%d")])

print(dates)
[['2018-01-01', '2018-01-31'], ['2018-02-01', '2018-02-28'], 
 ['2018-03-01', '2018-03-31'], ['2018-04-01', '2018-04-30'],
 ['2018-05-01', '2018-05-31'], ['2018-06-01', '2018-06-30'],
 ['2018-07-01', '2018-07-31'], ['2018-08-01', '2018-08-31'],
 ['2018-09-01', '2018-09-30'], ['2018-10-01', '2018-10-31'],
 ['2018-11-01', '2018-11-30'], ['2018-12-01', '2018-12-31'],
 ['2019-01-01', '2019-01-31'], ['2019-02-01', '2019-02-28'],
 ['2019-03-01', '2019-03-31'], ['2019-04-01', '2019-04-30'],
 ['2019-05-01', '2019-05-31'], ['2019-06-01', '2019-06-30'],
 ['2019-07-01', '2019-07-31'], ['2019-08-01', '2019-08-31'],
 ['2019-09-01', '2019-09-30'], ['2019-10-01', '2019-10-31'],
 ['2019-11-01', '2019-11-30'], ['2019-12-01', '2019-12-31'],
 ['2020-01-01', '2020-01-31'], ['2020-02-01', '2020-02-29'],
 ['2020-03-01', '2020-03-31'], ['2020-04-01', '2020-04-30'],
 ['2020-05-01', '2020-05-31'], ['2020-06-01', '2020-06-30'],
 ['2020-07-01', '2020-07-31'], ['2020-08-01', '2020-08-31'],
 ['2020-09-01', '2020-09-30'], ['2020-10-01', '2020-10-31'],
 ['2020-11-01', '2020-11-30'], ['2020-12-01', '2020-12-31']]

Дайте мне знать, если это поможет! : D

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