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.

El pandas DataFrame utiliza Timedelta para establecer el tiempo en formato H:M:S:f como 00:00:00:000.

Tengo un DataFrame de pandas con la siguiente columna (la primera columna = índice):

0         14:43:45:921

1         14:43:45:923

2         14:43:45:925

Me gustaría modificar esta columna, o añadir otra columna con la hora que empieza en 0:

0         00:00:00.000

1         00:00:00.002

2         00:00:00.004

Hasta ahora, he intentado el siguiente código:

df['time'].apply(pd.Timedelta)

Esto me da el siguiente error:

Se esperaba el formato hh:mm:ss

Para mí, el problema es:

a) convertir el formato de tiempo HH:MM:SS:fff a HH:MM:SS.fff y

b) hacer que la función timedelta funcione.

¿Alguien tiene alguna sugerencia? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el primer problema, puedes utilizar la manipulación de cadenas para reemplazar los : entre los segundos y los milisegundos con un .. Aquí tienes un fragmento de código de ejemplo para hacer esto:

    df['time'] = df['time'].str.replace(':', '.', regex=False)
    

    Ahora, tu DataFrame se vería así:

    0         14:43:45.921
    
    1         14:43:45.923
    
    2         14:43:45.925
    

    Para solucionar el segundo problema, puedes utilizar la función timedelta para restar el valor de tiempo mínimo de cada valor en la columna, comenzando así el tiempo desde 0. Aquí tienes un fragmento de código de ejemplo para hacer esto:

    df['time_zero'] = (pd.to_datetime(df['time']) - pd.to_datetime(df['time'].min())).dt.time
    

    Ahora, tu DataFrame se vería así:

    0         00:00:00.000
    
    1         00:00:00.002
    
    2         00:00:00.004
    

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.