Estoy tratando de importar una cadena de fecha con un día rellenado con ceros, un mes rellenado con ceros y un año sin siglo para crear una fecha y hora, p. (11219 al 12/01/19). Sin embargo, los pandas no pueden distinguir entre el día y el mes (por ejemplo, 11219 podría ser el 11 de febrero de 2019 o el 1 de diciembre de 2019).

He intentado usar 'dayfirst' y el '#' en el día, p. % # d, pero nada funciona. Código a continuación, ¿algún consejo?

Código:

df_import['newDate'] = pd.to_datetime(df_import['Date'], format='%d/%m/%Y', dayfirst = True)

Error:

los datos de tiempo '11219' no coinciden con el formato '% d /% m /% Y' (coincidencia)

2
jruther 23 jun. 2020 a las 14:17

2 respuestas

  1. use zfill ()

  2. También se puede usar una función personalizada si desea manejar más casos.

    def getDate(str):
       return #logic to parse
    
    df_import['newDate'] = df_import['Date'].apply(getDate)
    
0
Abhishek Gupta 23 jun. 2020 a las 12:11

Dado que solo el día no tiene relleno de cero, las fechas no son ambiguas. Los pandas simplemente pueden analizarlos si agregamos el pad:

pd.to_datetime(df_import['Date'].str.zfill(6), format='%d%m%y')
1
Armali 23 jun. 2020 a las 11:54