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