Pandas: як обчислити різницю між двома часами


Ви можете використовувати такий синтаксис, щоб обчислити різницю між двома часами в pandas DataFrame:

 #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 деякого Pandas DataFrame.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: обчислення різниці між двома часами в пандах

Припустімо, що у нас є наступні pandas 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

Ми можемо використати такий синтаксис, щоб обчислити різницю в часі між стовпцями 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *