TransWikia.com

Convertir Columna Fecha de tipo object a INT

Stack Overflow en español Asked on December 23, 2021

Estoy trabajando en Jupyter, al leer un archivo .CSV con varias columnas, de las cuales necesito transformar la columna "data_symptoms" y "date_death_or_discharge "a INT para poder realizar algoritmos de machine learning, regresion lineal, kmean, etc pero el problema es que con el codigo

datos_ruido[‘date_confirmation’] = datos_ruido[‘date_confirmation’].astype(int)

Me arroja un error al intentar transformarlo a INT

Dejare el error que me dio el jupyter igualmente "invalid literal for int() with base 10: ’21-02-2020’"

¿Cómo puedo convertir columnas a números enteros?

introducir la descripción de la imagen aquí
introducir la descripción de la imagen aquí

One Answer

Lo más sano es convertir la fecha a segundos desde una fecha base. La fecha base se denomina epoch y varia de plataforma en plataforma, pero sirve para ordenar cualquier fecha "reciente".

Con las fechas en el formato que presentas. necesitas sólo dos instrucciones para esto:

t = time.strptime(fecha, "%d-%m-%Y")
sec = int(time.mktime(t))

strptime sirve para convertir la fecha como string a una estructura común a las restantes funciones de time.

mktime(t) retorna el numero de segundos desde epoch. sec es un float; pero basta con la parte entera, dado que la entrada son días completos.

Por lo tanto, todo se reduce a recorrer la columna reemplazando las fechas, como se ilustra en este ejemplo (no es panda, pero la idea es la misma):

import time

fechas = ["01-10-2020", "14-05-2019", "30-06-2020"]

for fecha in fechas:
    t = time.strptime(fecha, "%d-%m-%Y")
    sec = int(time.mktime(t))
    print(sec)

produce:

1601521200
1557806400
1593489600

Answered by Candid Moe on December 23, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP