Привести все неправильно отформатированные строковые элементы объекта серии Pandas к типу datetime.time - PullRequest
0 голосов
/ 31 августа 2018

У меня есть объект серии Pandas (df.Lateness), в котором каждый элемент является строкой, но формат не соответствует:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4           0
5           0
6    00:01:36
7           0
8           0
9           0

Я хотел бы преобразовать их в типы datetime.time, где 0 представляют 00:00:00 в формате% H:% M:% S, но когда я выполняю следующий код:

pd.to_datetime(df.Lateness, format = '%H:%M:%S')

Я получаю два исключения:

TypeError: Нераспознанный тип значения: класс 'str'

ValueError: данные времени '0' не соответствуют формату '% H:% M:% S' (совпадение)

Есть ли способ обойти эту проблему?

1 Ответ

0 голосов
/ 31 августа 2018

Я не уверен, подходит ли вам это, но, по моему мнению, преобразование неформатных значений в NaT будет более удобным:

result = pd.to_datetime(lateness, format='%H:%M:%S', errors='coerce').dt.time

Результат:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4         NaT
5         NaT
6    00:01:36
7         NaT
8         NaT
9         NaT

Если вы все еще хотите преобразовать NaT в 00:00:00, используя fillna:

result.fillna(pd.to_datetime('00:00:00', format='%H:%M:%S').time())

Результат:

0    00:01:48
1    00:07:38
2    00:04:44
3    00:12:18
4    00:00:00
5    00:00:00
6    00:01:36
7    00:00:00
8    00:00:00
9    00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...