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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *