Pandas: como calcular a diferença entre dois tempos


Você pode usar a seguinte sintaxe para calcular a diferença entre dois tempos em um DataFrame do pandas:

 #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 )

Este exemplo específico calcula a diferença entre os horários nas colunas end_time e start_time de alguns Pandas DataFrame.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: calculando a diferença entre dois tempos em pandas

Suponha que temos o seguinte DataFrame do pandas:

 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

Podemos usar a seguinte sintaxe para calcular a diferença de tempo entre as colunas start_time e end_time em termos de horas, minutos e segundos:

 #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

As novas colunas contêm as diferenças de tempo entre as colunas start_time e end_time em unidades diferentes.

Por exemplo, considere a primeira linha:

  • A diferença entre a hora de início e a hora de término é de 24 horas .
  • A diferença entre a hora de início e a hora de término é de 1.440 minutos .
  • A diferença entre a hora de início e a hora de término é de 86.400 segundos .

Observe que neste exemplo, as colunas start_time e end_time já estão formatadas como datetime.

Se suas colunas de hora estiverem formatadas como strings, você poderá usar pd.to_datetime para primeiro converter cada coluna para o formato de data e hora antes de calcular a diferença entre as horas:

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

Você pode então calcular as diferenças de tempo entre as colunas, já que agora ambas estão em um formato de data e hora que os pandas podem reconhecer.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como criar um intervalo de datas no Pandas
Como extrair o mês da data no Pandas
Como converter carimbo de data/hora em data/hora no Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *