Я хочу преобразовать другой тип формата (str, например, sep 2019, int, как 2018, float в datetime.datetime) - PullRequest
0 голосов
/ 10 июля 2019
2010-01-01 00:00:00
Dec 2017
2008-06-01 00:00:00
2018-06-01 00:00:00
2009
2018-11-01 00:00:00
Feb 2018
2005
Aug 2017

Мне нужно преобразовать их в один формат, я пробовал этот код, но он содержит много ошибок, я ценю вашу помощь

for i in dt[i][4] :
    if  type(i) == str:
    dt[i][4] = pd.to_datetime(dt[i][4])

1 Ответ

1 голос
/ 10 июля 2019

Модуль dateutil предоставляет модуль синтаксического анализа , который может обнаруживать различные форматы и преобразовывать их в datetime объекты.

from dateutil.parser import parse
dates = [
    '2010-01-01 00:00:00',
    'Dec 2017',
    '2008-06-01 00:00:00',
    '2018-06-01 00:00:00',
    '2009',
    '2018-11-01 00:00:00',
    'Feb 2018',
    '2005',
    'Aug 2017'
]

[parse(date) for date in dates]

Результат:

[datetime.datetime(2010, 1, 1, 0, 0),
 datetime.datetime(2017, 12, 10, 0, 0),
 datetime.datetime(2008, 6, 1, 0, 0),
 datetime.datetime(2018, 6, 1, 0, 0),
 datetime.datetime(2009, 7, 10, 0, 0),
 datetime.datetime(2018, 11, 1, 0, 0),
 datetime.datetime(2018, 2, 10, 0, 0),
 datetime.datetime(2005, 7, 10, 0, 0),
 datetime.datetime(2017, 8, 10, 0, 0)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...