У меня такая колонка dat
:
Это выглядит так:
dat
0 2018-06-18
1 2018-06-24
2 2018-06-26
3 2018-06-27
4 2018-06-29
5 2018-12-07
6 2018-07-31
7 2018-01-08
8 2018-06-08
9 2018-07-08
10 2018-08-08
11 2018-08-27
12 2018-08-31
Я хочу, чтобы дата была похожа на '%d/%m/%Y'
b['dat']=pd.to_datetime(b['dat'],dayfirst= 1) #either this or
b['dat']=pd.to_datetime(b['dat'],dayfirst= 0)
или даже yearfirst
= True
или False
выглядит одинаково и ничего не меняется.
Я знаю, что могу сделать это:
b['dat'] = b['dat'].dt.strftime('%d/%m/%Y')
, но он изменяет дату и время на тип данных объекта. А с другим подходом - нет.
Он используется, если формат дат подобен 05-04-2015
, тогда dayfirst=True
предназначен для правильного разбора на 2015-04-05
- это день 5, а не день 4.
Так следует ли мне использовать b['dat'] = b['dat'].dt.strftime('%d/%m/%Y')
, даже если он превращает datetime в объект? это неправильно, если это произойдет?
Да, вы можете изменить формат, но потеряли дату и время. Но если вам нужны даты в настраиваемом формате, это невозможно в python.
имеет ли он какие-либо негативные последствия, если станет объектом?
Конечно, вы не можете работать с функциями даты и времени, лучше всего работать с датами, а последний шаг перед записью в файл - использовать strftime
отлично. Еще кое-что. если это так, какова цель параметра формата в to.datetime
, если он не действует: b['dt']=pd.to_datetime(b['dt'],format='%d%m%Y')
?
Нет, ты ошибаешься. Лучше всего определить его, потому что тогда он более эффективен - to_datetime
не угадывает правильный формат даты и времени.
Но это не меняет его на format = '% d% m% Y'. в этом случае он остается прежним.
Нет, он используется, если даты похожи на 05-04-2015
datetime
хранит даты как целые числа. Любое конкретное форматирование, которое вы видите, - это строковое представление. См. Отмеченный дубликат для более полного объяснения.
В python это невозможно, потому что
datetime
s всегда имеет одинаковую структуруYYYY-MM-DD