Получить в следующем месяце первую дату на основе массива datetime numpy - PullRequest
0 голосов
/ 16 апреля 2020

Данные

lst=array(['2019-08-30T00:00:00.000000000', '2019-09-30T00:00:00.000000000',
       '2019-10-31T00:00:00.000000000', '2019-11-29T00:00:00.000000000',
       '2020-01-23T00:00:00.000000000', '2020-02-28T00:00:00.000000000'],
      dtype='datetime64[ns]')

Цель

Я хочу получить первую дату следующего месяца для каждого элемента в вышеуказанном массиве. Например, 2019-08-30T00:00:00.000000000 будет '2019-09-01T00:00:00.000000000', 2020-01-23T00:00:00.000000000 будет 2020-02-01T00:00:00.000000000, конечный результат будет словарным, как {'2019-08-30T00:00:00.000000000':'2019-09-01T00:00:00.000000000',……}

Попробуйте

Легко получить +timedelta(days=1) для некоторых элементов, но трудно '2020-01-23T00:00:00.000000000' et c.

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете конвертировать в месячные единицы измерения, добавлять единицы и конвертировать обратно:

(lst.astype("M8[M]")+1).astype("M8[ns]")
# array(['2019-09-01T00:00:00.000000000', '2019-10-01T00:00:00.000000000',
#        '2019-11-01T00:00:00.000000000', '2019-12-01T00:00:00.000000000',
#        '2020-02-01T00:00:00.000000000', '2020-03-01T00:00:00.000000000'],
#       dtype='datetime64[ns]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...