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?
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP