Разница даты и времени Python между двумя датами в секундах (объект dataframe)

Нужна помощь с кодом Python: у меня есть разница в дате создания и закрытия в этом формате - 30.01.2020 1:55:00 и 30.01.2020 09:44:00. Необходимо преобразовать указанную выше разницу в формате даты в общее количество секунд. Как сделать когда-нибудь разница будет в днях и времени вроде - 25 дней, 05:23:00. Как преобразовать вышеуказанный формат разницы во времени между двумя датами в общее количество секунд и сохранить его обратно в том же фрейме данных в качестве нового столбца.

Любая оказанная помощь будет действительно оценена.


person Senthilkumar Sethuraman    schedule 09.07.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как мне проверить разницу в секундах, между двумя датами?   -  person divibisan    schedule 09.07.2020


Ответы (3)


Этот код может вам помочь.

import datetime

date1 = "01/30/2020 1:55:00"
date2 = "01/30/2020 09:44:00"

date1_obj = datetime.datetime.strptime(date1, '%m/%d/%Y %H:%M:%S')
date2_obj = datetime.datetime.strptime(date2, '%m/%d/%Y %H:%M:%S')

difference_seconds = abs((date1_obj - date2_obj).seconds)
difference_days = abs((date1_obj - date2_obj).days)
print (difference_seconds)
print (difference_days)
person fro    schedule 09.07.2020

Объект datetime имеет метод под названием timestamp(), который возвращает количество секунд с начала 1970 года. Просто сделайте это для обоих datetime и вычтите.

seconds = date1.timestamp() - date2.timestamp()
person Andrew Allaire    schedule 09.07.2020

Если вы используете кадр данных pandas, вы можете использовать метод доступа series dt для преобразования разницы между датами в секунды.

import pandas as pd

df = pd.DataFrame(data={
    'from': ["01/30/2020 1:55:00", "01/25/2020 15:30:00"],
    'to': ["01/30/2020 09:44:00", "01/26/2020 1:55:00"]})

# convert to datetime objects
df['from'] = pd.to_datetime(df['from'])
df['to'] = pd.to_datetime(df['to'])

df['difference'] = (df['to'] - df['from'])

df['difference_seconds'] = df['difference'].dt.total_seconds()

print(df)

Это даст таблицу вида:

|    | from                | to                  | difference      |   difference_seconds |
|---:|:--------------------|:--------------------|:----------------|---------------------:|
|  0 | 2020-01-30 01:55:00 | 2020-01-30 09:44:00 | 0 days 07:49:00 |                28140 |
|  1 | 2020-01-25 15:30:00 | 2020-01-26 01:55:00 | 0 days 10:25:00 |                37500 |
person rich_morton    schedule 09.07.2020