Panda: come calcolare la differenza tra due tempi


È possibile utilizzare la seguente sintassi per calcolare la differenza tra due tempi in un DataFrame panda:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

Questo particolare esempio calcola la differenza tra i tempi nelle colonne end_time e start_time di alcuni Pandas DataFrame.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: calcolare la differenza tra due tempi nei panda

Supponiamo di avere i seguenti panda DataFrame:

 import pandas as pd

#createDataFrame
df=pd. DataFrame ({' start_time ':pd. date_range (start=' 5/25/2020 ', periods= 6 , freq=' 15min '),
                 ' end_time ':pd. date_range (start=' 5/26/2020 ', periods= 6 , freq=' 30min ')})

#view DataFrame
print (df)

           start_time end_time
0 2020-05-25 00:00:00 2020-05-26 00:00:00
1 2020-05-25 00:15:00 2020-05-26 00:30:00
2 2020-05-25 00:30:00 2020-05-26 01:00:00
3 2020-05-25 00:45:00 2020-05-26 01:30:00
4 2020-05-25 01:00:00 2020-05-26 02:00:00
5 2020-05-25 01:15:00 2020-05-26 02:30:00

Possiamo utilizzare la seguente sintassi per calcolare la differenza temporale tra le colonne start_time e end_time in termini di ore, minuti e secondi:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

#view updated DataFrame
print (df)

           start_time end_time hours_diff min_diff sec_diff
0 2020-05-25 00:00:00 2020-05-26 00:00:00 24.00 1440.0 86400.0
1 2020-05-25 00:15:00 2020-05-26 00:30:00 24.25 1455.0 87300.0
2 2020-05-25 00:30:00 2020-05-26 01:00:00 24.50 1470.0 88200.0
3 2020-05-25 00:45:00 2020-05-26 01:30:00 24.75 1485.0 89100.0
4 2020-05-25 01:00:00 2020-05-26 02:00:00 25.00 1500.0 90000.0
5 2020-05-25 01:15:00 2020-05-26 02:30:00 25.25 1515.0 90900.0

Le nuove colonne contengono le differenze orarie tra le colonne start_time e end_time in unità diverse.

Consideriamo ad esempio la prima riga:

  • La differenza tra l’ora di inizio e l’ora di fine è di 24 ore .
  • La differenza tra l’ora di inizio e l’ora di fine è 1440 minuti .
  • La differenza tra l’ora di inizio e l’ora di fine è 86.400 secondi .

Tieni presente che in questo esempio le colonne start_time e end_time sono già formattate come datetime.

Se le colonne dell’ora sono attualmente formattate come stringhe, puoi utilizzare pd.to_datetime per convertire ciascuna colonna nel formato datetime prima di calcolare la differenza tra le ore:

 #convert columns to datetime format
df[[' start_time ', ' end_time ']] = df[[' start_time ', ' end_time ]]. apply (pd. to_datetime )

È quindi possibile procedere al calcolo delle differenze orarie tra le colonne poiché ora sono entrambe in un formato data/ora che i panda possono riconoscere.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come creare un intervallo di date in Pandas
Come estrarre il mese dalla data in Pandas
Come convertire il timestamp in data/ora in Pandas

Aggiungi un commento

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