Crear datos de ejemplo
Comenzaremos creando un DataFrame muy simple que puede usar para seguir este ejemplo detallado.
import pandas as pd participant = ['Joe', 'Eric', 'Aaron'] duration = [pd.Timedelta(hours = 2, minutes = 15, seconds = 15) , pd.Timedelta(hours = 2, minutes = 45, seconds = 10), pd.Timedelta(hours = 2, minutes = 53, seconds = 22)] #create DataFrame times_df = pd.DataFrame ( dict(participant=participant, duration = duration)) print (times_df.head())
Este fragmento devolverá el siguiente marco de datos: tenga en cuenta que el tipo de columna de duración es timedelta[ns64].
José | 0 días 02:15:15 |
eric | 0 días 02:45:10 |
Aarón | 0 días 02:53:22 |
Series de Timedeltas a segundos (enteros y flotantes)
Puede usar el descriptor de acceso Series dt y la función total_seconds para convertir su columna de timedeltas en segundos.
Flotadores: Tenga en cuenta el uso de la función round():
times_df['duration_seconds'] = times_df['duration'].dt.total_seconds().round()
Nota: asegúrese de usar el descriptor de acceso dt y no aplique la función total_seconds() en la Serie directamente. Si no lo hace, se generará la siguiente excepción:
AttributeError: 'Series' object has no attribute 'total_seconds'
enteros:
times_df['duration_seconds'] = times_df['duration'].dt.total_seconds().astype('int64')
Nota: una alternativa para realizar esta tarea es utilizar el método apply con una función lambda. Sin embargo, tenga en cuenta que usar una operación vectorial como se muestra arriba es mucho más rápido:
times_df['duration_seconds'] = times_df['duration'].apply (lambda cell: cell.total_seconds())
Convertir timedeltas a horas y minutos
Usando una lógica similar, podemos convertir el delta en un número de minutos.
times_df['duration_minutes'] = (times_df['duration'].dt.total_seconds()/60).round(2)
Y a horas:
times_df['duration_hours'] = (times_df['duration'].dt.total_seconds()/3600).round(2)
Aquí está nuestra trama de datos:
times_df.head()
José | 0 días 02:15:15 | 8115 | 135.25 | 2.25 |
eric | 0 días 02:45:10 | 9910 | 165.17 | 2.75 |
Aarón | 0 días 02:53:22 | 10402 | 173.37 | 2.89 |
Seguir el aprendizaje
¿Cómo emitir una columna de fecha y hora en pandas para encontrar el día de la semana?