Как преобразовать столбец данных в фрейме данных, заполненном строковым представлением неравномерных форматов даты, в datetime?

#python-3.x #pandas

#python-3.x #pandas

Вопрос:

Допустим:

 >>> print(df)

    location        date
    paris     23/02/2010
    chicago    3-23-2013
    ...
    new york  04-23-2013
    helsinki  13/10/2015
  

В настоящее время df["date"] находится в str . Я хочу преобразовать столбец даты в datetime с помощью

 >>> df["date"] = pd.to_datetime(df["date"])
  

Я бы получил ValueError из-за ParserError. Это связано с тем, что формат даты является непоследовательным (т. Е. дд / мм / гггг, затем следующий — m / dd / гггг).

Если бы я написал приведенный ниже код, он все равно не работал бы из-за того, что дата не была унифицирована, а разделители отличались:

 >>> df["date"] = pd.to_datetime(df["date"], format="%d/%m/%Y")
  

Последний вариант, о котором я мог подумать, это написать приведенный ниже код, который заменяет все даты, которые не отформатированы как первая дата, на NaT :

 >>> df["date"] = pd.to_datetime(df["date"], errors="coerce")
  

Как мне преобразовать весь date столбец в datetime, если даты не являются однородными с точки зрения разделителей и порядков дней, месяцев и лет?

Ответ №1:

используйте, apply метод pandas

 df['date'] = df.apply(lambda x: pd.to_datetime(x['date']),axis = 1)