Разница между объектом datetime возвращает только дни

#pandas #datetime

#pandas #datetime

Вопрос:

Я пытаюсь вычислить разницу между двумя объектами datetime, но он возвращает только разницу между днями, а не между часами / минутами / секундами.

Это мой код:

 import pandas as pd
import datetime as dt

df = pd.read_csv(r'recorridos-realizados-2020.csv')

df.head(2)
Id_start    start_date          end_date                Id_end      ID_cyclist
75          2020-09-14 11:52:21 2020-09-14 11:58:10     186.0       155721
210         2020-09-14 11:51:41 2020-09-14 11:53:06     210.0       191320

df['start_date'] = pd.to_datetime(df['start_date'], format='%Y-%m-%d %H:%M:%S')
df['end_date'] = pd.to_datetime(df['end_date'], format='%Y-%m-%d %H:%M:%S')

df['timelapse'] = df['end_date'] - df['start_date']

df['timelapse'].head()
0        0 days
1        0 days
  

Результат должен быть:
0 дней, 00:05:49
0 дней, 00:01:25

Что я делаю не так?

Комментарии:

1. df['timelapse'].dt.total_seconds() дает ли вам правильные значения? ps. ISO-формат анализируется правильно pd.to_datetime , вам не нужно указывать формат.

2. df[‘timelapse’].dt.total_seconds() дает мне 0.0 для каждой строки. Спасибо за совет о pd.to_datetime.

3. Ваш код работает для меня. Я также получаю секунды: 0 0 days 00:05:49 1 0 days 00:01:25 какую версию python и pandas вы используете?

Ответ №1:

Пожалуйста, посмотрите на временные дельты pandas.

 d1 = pd.to_datetime('2020-09-14 11:52:21')
d2 = pd.to_datetime('2020-09-14 11:58:10')
delta = (d2-d1)

print('seconds: ', delta.seconds)