Панды: как посчитать разницу между двумя временами


Вы можете использовать следующий синтаксис для вычисления разницы между двумя значениями времени в DataFrame 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 )

В этом конкретном примере вычисляется разница между временем в столбцах end_time и start_time некоторого DataFrame Pandas.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: вычисление разницы между двумя временами в пандах

Предположим, у нас есть следующий DataFrame 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

Мы можем использовать следующий синтаксис для расчета разницы во времени между столбцами start_time и end_time в часах, минутах и секундах:

 #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

Новые столбцы содержат разницу во времени между столбцами start_time и end_time в разных единицах измерения.

Например, рассмотрим первую строку:

  • Разница между временем начала и временем окончания составляет 24 часа .
  • Разница между временем начала и временем окончания составляет 1440 минут .
  • Разница между временем начала и временем окончания составляет 86 400 секунд .

Обратите внимание, что в этом примере столбцы start_time и end_time уже отформатированы как datetime.

Если ваши столбцы времени в настоящее время отформатированы как строки, вы можете использовать pd.to_datetime , чтобы сначала преобразовать каждый столбец в формат даты и времени, прежде чем вычислять разницу между временем:

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

Затем вы можете приступить к вычислению разницы во времени между столбцами, поскольку теперь они оба имеют формат даты и времени, который могут распознавать панды.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как создать диапазон дат в Pandas
Как извлечь месяц из даты в Pandas
Как преобразовать временную метку в дату/время в Pandas

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *