1. Не помешало бы, пример несколько строк из фрейма которые не сортируются.
2. Обратно возвращать в строку не обязательно.
3. Методы чтения имеют параметр parse_dates для того что бы строковое представление даты перводить в тип данных datetime64
вот небольшой примерчик
(
pd.DataFrame({
'string_dates':['17.08.2024','15.08.2024','20.09.2024'],
'values':[10,100,1000]
})
.assign(
dates=lambda x: pd.to_datetime(x['string_dates'],format='%d.%m.%Y')
)
.sort_values(by='dates')
)
как видишь все сортируется, обрати внимания на типы данных. Колонку которая используется для сортировки можно дропнуть, ну или создать ее что называется "на лету".