Невозможно получить разницу во времени между pandas столбцами данных - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть pandas фрейм данных, который содержит пару столбцов. Два из которых являются start_time и end_time. В этих столбцах значения выглядят как - 2020-01-04 01:38:33 +0000 UT C

Я не могу создать объект datetime из этих строк, потому что я Я не могу получить правильный формат -

df['start_time'] = pd.to_datetime(df['start_time'], format="yyyy-MM-dd HH:mm:ss +0000 UTC")

Я также пытался использовать yyyy-MM-dd HH:mm:ss %z UTC в качестве формата

Это выдает ошибку -

ValueError: time data '2020-01-04 01:38:33 +0000 UTC' does not match format 'yyyy-MM-dd HH:mm:ss +0000 UTC' (match)

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Ниже приведены некоторые примечания по этой проблеме:

1. О вашей ошибке

Это дает ошибку -

Вы проанализировали неправильный формат даты и времени, который приведет к ошибке. Для правильного формата проверьте это https://strftime.org/. Правильный формат для этой проблемы: "%Y-%m-%d %H:%M:%S %z UTC"

2. Pandas ограничение по часовому поясу

Парсинг UT C часовой пояс, так как %z не работает на pd.Series (он работает только для значения индекса). Поэтому, если вы воспользуетесь этим, не будет работать :

df['startTime'] = pd.to_datetime(df.startTime, format="%Y-%m-%d %H:%M:%S %z UTC", utc=True)

Решение , для этого используется встроенная библиотека python для вывода данных даты и времени:

from datetime import datetime
f = lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S %z UTC")
df['startTime'] = pd.to_datetime(df.startTime.apply(f), utc=True)

@ fmarm ответ поможет вам только с данными даты и часа, но не с UT C часовой пояс.

0 голосов
/ 17 февраля 2020

Вам просто нужно использовать правильный формат метки времени, который to_datetime распознает

df['start_time'] = pd.to_datetime(df['start_time'], format="%Y-%m-%d %H:%M:%S +0000 UTC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...