Ошибка значения: временные данные ’00:01:29:06′ не соответствуют формату ‘%d:% H:%M:% S’

#python #pandas

#python #панды

Вопрос:

Мне нужно преобразовать фрейм данных в столбцы duration в формат datetime для анализа среднего или максимального / минимального, но теперь он работает, нужна помощь, спасибо. фрейм данных

 df['duration'] =pd.to_datetime(df['duration'], format='%d:%H:%M:%S')
  

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

1. Если я не ошибаюсь %d (день) должен быть между 01 и 31 . 00 не будет соответствовать формату.

Ответ №1:

Причина ошибки в том, что %d формат принимает только значения между 01 и 31 (поскольку он обозначает «день месяца»). 00 тогда они недействительны.

Лучший обходной путь, который я мог придумать (кто-то может предложить что-то лучшее), — это использовать регулярное выражение для преобразования строк, содержащихся в duration столбце, в некоторую допустимую строку, как в следующем примере:

 df['duration']=pd.to_timedelta(df.duration.str.replace(r"(?P<day>d ):", r'g<day> days ', 1))
  

Я понятия не имею о временной сложности приведенного выше примера (в случае наличия большой таблицы для преобразования).

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

1. Спасибо, сэр, и как это исправить. я использую «df [‘duration’] = pd.to_timedelta(df[‘duration’])», но ошибка показывает «Ошибка значения: ожидаемый формат hh: mm: ss».

2. Просто отредактировал ответ с предложением обходного пути