Есть ли способ преобразовать строку в дату с этим форматом (2 февраля 19) в Python? - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь преобразовать string в date, прежде чем я смогу сделать некоторую арифметику с датой.

Моя строка имеет этот формат 2-FEB-19, я хочу сохранить тот же формат после преобразования его в date.Как я могу это сделать?

Я попытался df['dates'].to_datetime('2-Feb-19', format='%d-%m-%y') и получил сообщение об ошибке "time data '2-Feb-19' does not match format '%d-%m-%y' (match)"

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Вы используете %m, который хочет месяц в качестве числа с нулем, например 02.используйте %b.


Из вашего вопроса видно, что вы имеете дело с единственной строкой, а не с серией Панд или другой последовательностью.Для этого вы можете использовать strptime() из модуля Python datetime в стандартной библиотеке:

>>> datetime.datetime.strptime('2-FEB-19', '%d-%b-%y')
datetime.datetime(2019, 2, 2, 0, 0)

Если вы действительно хотите использовать Pandas, будь то скаляр (строка) или последовательность,Вы можете использовать спецификатор формата %b:

>>> pd.to_datetime('2-FEB-19', format='%d-%b-%y')
Timestamp('2019-02-02 00:00:00')

Ссылка Python на директивы strptime находится в datetime документах.


Конечно, Pandas (и используемые им библиотеки синтаксического анализа дат) довольно хороши в умозаключениях и, как правило, угадают:

>>> pd.to_datetime('2-FEB-19')
Timestamp('2019-02-02 00:00:00')
0 голосов
/ 18 апреля 2019

Вы должны использовать соответствующий формат:

df['dates'].to_datetime('2-Feb-19', format='%d-%b-%y')

% b «Месяц как сокращенное название локали»: январь, февраль,…, декабрь (en_US);

Ref. https://docs.python.org/3/library/datetime.html

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