Comment convertir Timedelta en Int dans Pandas (avec exemples)



Vous pouvez utiliser les méthodes suivantes pour convertir une colonne timedelta en colonne entière dans un DataFrame pandas :

Méthode 1 : convertir Timedelta en nombre entier (jours)

df['days'] = df['timedelta_column'].dt.days

Méthode 2 : convertir Timedelta en entier (heures)

df['hours'] = df['timedelta_column'] / pd.Timedelta(hours=1)

Méthode 3 : convertir Timedelta en entier (minutes)

df['minutes'] = df['timedelta_column'] / pd.Timedelta(minutes=1)

L’exemple suivant montre comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'promotion': ['A', 'B', 'C', 'D'],
                   'start': ['2021-10-04 13:29:00', '2021-10-07 12:30:00',
                             '2021-10-15 04:20:00', '2021-10-18 15:45:03'],
                   'end':   ['2021-10-08 11:29:06', '2021-10-15 10:30:07',
                             '2021-10-29 05:50:15', '2021-10-22 15:40:03']})

#convert start date and end date columns to datetime
df['start'] = pd.to_datetime(df['start'])
df['end'] = pd.to_datetime(df['end'])

#create new column that contains timedelta between start and end
df['duration'] = df['end'] - df['start']

#view DataFrame
print(df)

  promotion               start                 end         duration
0         A 2021-10-04 13:29:00 2021-10-08 11:29:06  3 days 22:00:06
1         B 2021-10-07 12:30:00 2021-10-15 10:30:07  7 days 22:00:07
2         C 2021-10-15 04:20:00 2021-10-29 05:50:15 14 days 01:30:15
3         D 2021-10-18 15:45:03 2021-10-22 15:40:03  3 days 23:55:00

Exemple 1 : convertir Timedelta en nombre entier (jours)

Le code suivant montre comment créer une nouvelle colonne appelée jours qui convertit le timedelta dans la colonne durée en une valeur entière qui représente le nombre de jours dans la colonne timedelta.

#create new column that converts timedelta into integer number of days
df['days'] = df['duration'].dt.days

#view updated DataFrame
print(df)

  promotion               start                 end         duration  days
0         A 2021-10-04 13:29:00 2021-10-08 11:29:06  3 days 22:00:06     3
1         B 2021-10-07 12:30:00 2021-10-15 10:30:07  7 days 22:00:07     7
2         C 2021-10-15 04:20:00 2021-10-29 05:50:15 14 days 01:30:15    14
3         D 2021-10-18 15:45:03 2021-10-22 15:40:03  3 days 23:55:00     3

Nous pouvons utiliser dtype pour vérifier le type de données de cette nouvelle colonne :

#check data type
df.days.dtype

dtype('int64')

La nouvelle colonne est un entier.

Exemple 2 : convertir Timedelta en entier (heures)

Le code suivant montre comment créer une nouvelle colonne appelée heures qui convertit le timedelta dans la colonne durée en une valeur numérique qui représente le nombre total d’heures dans la colonne timedelta.

#create new column that converts timedelta into total number of hours
df['hours'] = df['duration'] / pd.Timedelta(hours=1)

#view updated DataFrame
print(df)

  promotion               start                 end         duration      hours
0         A 2021-10-04 13:29:00 2021-10-08 11:29:06  3 days 22:00:06   94.001667  
1         B 2021-10-07 12:30:00 2021-10-15 10:30:07  7 days 22:00:07  190.001944
2         C 2021-10-15 04:20:00 2021-10-29 05:50:15 14 days 01:30:15  337.504167
3         D 2021-10-18 15:45:03 2021-10-22 15:40:03  3 days 23:55:00   95.916667

Nous pouvons utiliser dtype pour vérifier le type de données de cette nouvelle colonne :

#check data type
df.hours.dtype

dtype('float64')

La nouvelle colonne est un float.

Exemple 3 : Convertir Timedelta en entier (minutes)

Le code suivant montre comment créer une nouvelle colonne appelée minutes qui convertit le timedelta dans la colonne durée en une valeur numérique qui représente le nombre total de minutes dans la colonne timedelta.

#create new column that converts timedelta into total number of minutes
df['minutes'] = df['duration'] / pd.Timedelta(minutes=1)

#view updated DataFrame
print(df)

  promotion               start                 end         duration        minutes
0         A 2021-10-04 13:29:00 2021-10-08 11:29:06  3 days 22:00:06    5640.100000  
1         B 2021-10-07 12:30:00 2021-10-15 10:30:07  7 days 22:00:07   11400.116667
2         C 2021-10-15 04:20:00 2021-10-29 05:50:15 14 days 01:30:15   20250.250000
3         D 2021-10-18 15:45:03 2021-10-22 15:40:03  3 days 23:55:00    5755.000000

Nous pouvons utiliser dtype pour vérifier le type de données de cette nouvelle colonne :

#check data type
df.minutes.dtype

dtype('float64')

La nouvelle colonne est un float.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment convertir des colonnes en DateTime dans Pandas
Comment convertir DateHeure en date dans Pandas
Comment extraire le mois de la date dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *