#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. Просто отредактировал ответ с предложением обходного пути