Python: El cambio de formato de las fechas múltiple en cadena en formato de fecha y hora

changhons:

Estoy tratando de convertir fecha diferente en formato de cadena de fecha y hora a formato. Tengo alrededor de ~ 1.000.000 filas de fechas en la columna 'status_change_date'. El problema es que hay muchos formatos diferentes y que no saben en qué formato están todos.

Por lo tanto, estoy tratando de esta función en mi nota jupyter:

def parsing_date(date_string):
    for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
        try:
            return datetime.strptime(date_string, date_format)
        except ValueError:
            raise
            print(date_string)
        raise ValueError('Something is wrong')

luego,

data['status_chage_date'].apply(parsing_date)

Estoy imprimiendo el error para que pueda tener en cuenta uno por uno en mi función hasta que no hay error más. Sin embargo, me encuentro con este mensaje de error:

ValueError: time data '17/10/2019 05:49:51' does not match format '%m/%d/%Y %H:%M:%S'

o

strptime() argument 1 must be str, not None

Pensé que cubría el formato en mi función y el segundo error es extraño que Excluí filas que tiene valor ninguno.

¿Qué estoy haciendo mal y hay una mejor manera de hacer esto?

bcosta12:

tenga en cuenta que se eleva cuando se produce un error! Es necesario poner a prueba todas sus posibilidades antes:

import pandas as pd 

def parsing_date(date_string):
    d = None
    for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
        try:
            d = datetime.strptime(date_string, date_format)
            break
        except:
            pass
    if d is not None:
        return d
    else:
        return pd.NaT

Observe también que si su día y mes son a la vez entre los números 1 a 12, no estará seguro de que su análisis a la fecha y hora correcta. Si es posible, se debe buscar lo que hace que los diferentes formatos y analizar de forma individual.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=320881&siteId=1
Recomendado
Clasificación