Потому что вы имеете дело с датой и время объектом уже, вы получаете эту ошибку, потому что strptime
требует строки и не Timestamp
объекта. Из определения strptime
:
def strptime(cls, date_string, format):
'string, format -> new datetime parsed from a string (like time.strptime()).'
То, что вы на самом деле хотите сделать это первым преобразовать DateTime в формате вам требуется, чтобы строки с помощью strftime
:
def strftime(self, format):
"""Return a string representing the date and time, controlled by an
explicit format string.
, а затем вернуть его обратно в a datetime
объект с использованием strptime
. Следующая демонстрация продемонстрирует. Обратите внимание на использование .date()
в конце, чтобы удалить ненужную часть времени 00:00:00
.
>>> from datetime import datetime
>>> orig_datetime_obj = datetime.strptime("2015/10/31", '%Y/%m/%d').date()
>>> print(orig_datetime_obj)
2015-10-31
>>> print(type(orig_datetime_obj))
<type 'datetime.datetime'>
>>> new_datetime_obj = datetime.strptime(orig_datetime_obj.strftime('%d-%m-%y'), '%d-%m-%y').date()
>>> print(new_datetime_obj)
2015-10-31
>>> print(type(new_datetime_obj))
<type 'datetime.date'>
В качестве альтернативы, если все, что вам требуется только преобразовать его в другой формат, но в строке, вы можете просто придерживаться только с помощью strftime
с новым форматом. Используя мой пример выше, вам нужно будет только эту часть:
orig_datetime_obj.strftime('%d-%m-%y')
@Prof Я заметил, что вы удалили принятый ответ. Есть ли особая проблема? Или был ли более простой способ решить это в пандах? Я спрашиваю из любопытства :) – idjaw
Или я сумасшедший, и там никогда не было принятого ответа .... :) – idjaw
Я не принял ответа только сейчас, потому что понял, что я не понял свой вопрос.Мой код состоит из строки с '.strptime', примененной к ней, а затем' .strftime' используется для изменения ее в правильном формате. Тем не менее, Pandas не сортирует столбцы относительно даты должным образом, поэтому я должен использовать формат, который сортируется правильно выше. Этот формат равен «% Y /% m /% d''. Используя этот формат, Pandas правильно сортирует столбцы. Но я бы хотел, чтобы он сортировался, а затем возвращал значения в желаемый формат: ''% d-% m-% y''. – Prof