es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar formato de tiempo en Python

Estoy tratando de cambiar el formato de tiempo de mis datos que ahora están en forma de 15:41:28:4330 o hh:mm:ss:msmsmsms a segundos.

He buscado en la documentación de pandas, pero no puedo encontrar este formato en ningún lugar.

¿Sería posible calcular simplemente los segundos a partir de ese formato de tiempo fila por fila?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible calcular los segundos a partir de la fila de formato de tiempo hh:mm:ss:msmsmsms utilizando Python y pandas. Un enfoque es dividir el valor de tiempo en columnas separadas para hora, minuto, segundo y milisegundo utilizando la función de división de cadenas (str.split(':')), y luego convertir cada columna a enteros. Después, puedes utilizar las funciones time, timedelta y total_seconds del módulo datetime para convertir el tiempo a segundos. Aquí tienes un ejemplo de código:

    import pandas as pd
    from datetime import time, timedelta
    
    # Datos de ejemplo
    df = pd.DataFrame({'time': ['15:41:28:4330', '12:34:56:7890']})
    
    # Extraer columnas de hora, minuto, segundo y milisegundo
    df[['hour', 'minute', 'second', 'millisecond']] = df['time'].str.split(':', expand=True).astype(int)
    
    # Calcular diferencia de tiempo en segundos desde la medianoche
    df['timedelta'] = df.apply(lambda x: timedelta(hours=x['hour'], 
                                                   minutes=x['minute'], 
                                                   seconds=x['second'], 
                                                   milliseconds=x['millisecond']), axis=1)
    df['seconds'] = df['timedelta'].dt.total_seconds()
    
    # Resultado de los datos
    print(df[['time', 'seconds']])
    

    Esto mostrará:

                 time   seconds
    0  15:41:28:4330  56488.43
    1  12:34:56:7890  45296.79
    

    Ten en cuenta que los segundos resultantes incluyen fracciones de segundo, con una precisión de milisegundos. Si necesitas redondear los segundos a valores enteros, puedes utilizar la función round.

Comments are closed.