Сделать формат даты похожим в наборе данных pandas

#python #pandas #date #jupyter-notebook

#python #pandas #Дата #jupyter-записная книжка

Вопрос:

Я хочу сделать формат даты одинаковым для всех строк в столбце date. Например, 19-я строка имеет другой формат даты. Это только часть набора данных. Также существуют строки diff, которые имеют тот же формат. Итак, что я могу сделать, чтобы формат даты был одинаковым во всех строках?

Я пытался использовать

 Covid_data['date'] = pd.to_datetime(Covid_data['date'], errors='coerce')
  

но он преобразует значение 19-й строки в NAT

 16  Australia   2020-01-16  0.0 0.0 0.0 0.0 44648.71    25499881.0  
17  Australia   2020-01-17  0.0 0.0 0.0 0.0 44648.71    25499881.0  
18  Australia   2020-01-18  0.0 0.0 0.0 0.0 44648.71    25499881.0  
19  Australia   2020-19-01  0.0 0.0 0.0 0.0 44648.71    25499881.0   
20  Australia   2020-01-20  0.0 0.0 0.0 0.0 44648.71    25499881.0  
21  Australia   2020-01-21  0.0 0.0 0.0 0.0 44648.71    25499881.0  
22  Australia   2020-01-22  0.0 0.0 0.0 0.0 44648.71    25499881.0   
  

Комментарии:

1. Да .. это из-за несовместимых форматов дат.

2. это то, что я хочу сделать. сделайте весь формат даты одинаковым во всех строках.

Ответ №1:

Попробуйте:

 Covid_data['date']=pd.to_datetime(Covid_data['date'].dt.strftime('%Y/%m/%d'))
  

редактировать: попробуйте это

Комментарии:

1. Отображение этой ошибки AttributeError: Можно использовать только .dt accessor со значениями, подобными datetimelike

2. Я отредактировал решение. Если это все еще не работает, возможно, вам потребуется включить: errors =’принудительное использование’.

3. Та же ошибка AttributeError: можно использовать только .dt accessor со значением, подобным datetimelike

Ответ №2:

Вы могли бы попробовать использовать dateparser пакет, но я не знаю, как вы собираетесь определять подходящий формат для таких дат, как 2020-01-08 .

 import pandas as pd
import dateparser

covid_data = pd.DataFrame({"date" : ["2020-01-18", "2020-19-01"]})

covid_data["date"].apply(dateparser.parse)