Come convertire timedelta in int in pandas (con esempi)
È possibile utilizzare i seguenti metodi per convertire una colonna timedelta in una colonna intera in un DataFrame panda:
Metodo 1: convertire Timedelta in numero intero (giorni)
df[' days '] = df[' timedelta_column ']. dt . days
Metodo 2: convertire Timedelta in numero intero (ore)
df[' hours '] = df[' timedelta_column '] / pd. Timedelta (hours= 1 )
Metodo 3: convertire Timedelta in numero intero (minuti)
df[' minutes '] = df[' timedelta_column '] / pd. Timedelta (minutes= 1 )
L’esempio seguente mostra come utilizzare ciascun metodo nella pratica con i seguenti DataFrame panda:
import pandas as pd
#createDataFrame
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 time delta 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
Esempio 1: convertire Timedelta in numero intero (giorni)
Il codice seguente mostra come creare una nuova colonna denominata days che converte il timedelta nella colonna durata in un valore intero che rappresenta il numero di giorni nella colonna 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
Possiamo usare dtype per controllare il tipo di dati di questa nuova colonna:
#check data type
df. days . dtype
dtype('int64')
La nuova colonna è un numero intero.
Esempio 2: convertire Timedelta in numero intero (ore)
Il codice seguente mostra come creare una nuova colonna denominata ore che converte il timedelta nella colonna durata in un valore numerico che rappresenta il numero totale di ore nella colonna 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
Possiamo usare dtype per controllare il tipo di dati di questa nuova colonna:
#check data type
df. hours . dtype
dtype('float64')
La nuova colonna è un float.
Esempio 3: convertire Timedelta in numero intero (minuti)
Il codice seguente mostra come creare una nuova colonna denominata minuti che converte il timedelta nella colonna durata in un valore numerico che rappresenta il numero totale di minuti nella colonna 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
Possiamo usare dtype per controllare il tipo di dati di questa nuova colonna:
#check datatype
df. minutes . dtype
dtype('float64')
La nuova colonna è un float.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:
Come convertire le colonne in DateTime in Pandas
Come convertire DateTime fino ad oggi in Panda
Come estrarre il mese dalla data in Pandas