Не меняется дата в формат даты с точкой как разделитель
Почему не меняются даты в формат даты с точкой?
Пользуюсь вот таким методом:
portfel['Дата поворота'] = pd.to_datetime(portfel['Дата поворота'], format = "%Y.%m.%d")
Возращает как даты, но через дефис, вот так: %Y-%m-%d. И игнорирует параметр unit
Есть еще стандартный для строк, он работает как надо, но не для DataFrame.
Вход:
96 2020-06-17
131 2020-06-19
139 2020-04-08
144 2020-06-26
145 2020-05-22
106328 2020-04-24
106330 2020-04-14
106365 2020-03-31
106376 2020-04-02
106432 2020-03-30
Выход:
96 2020.06.17
131 2020.06.19
139 2020.04.08
144 2020.06.26
145 2020.05.22
106328 2020.04.24
106330 2020.04.14
106365 2020.03.31
106376 2020.04.02
106432 2020.03.30
Может я не правильно понимаю концепцию дат в Phyton? На VB к примеру я могу указать формат в котором будет отоброжаться дата (через точку, пробел, тире и т.п.), но ее формат все равно будет датой. Я хочу что-бы даты оставались датами, но через точку.
Ответы (2 шт):
Попробуйте так:
portfel['Дата поворота'] = portfel['Дата поворота'].dt.strftime("%Y.%m.%d")
Учтите что после данного преобразования вы не сможете работать с данными как с датами - теперь это строки.
Отвечаю на вопрос из комментария:
Как лучше поступить? Я делаю срез временной по столбцу с датами, потом выгружаю его в excel. Лучше сразу сделать формат с точками и с ним манипулировать. Или преобразовать формат в datetime, провести нужные манипуляции, а только перед выгрузкой поменять формат.
Рекомендую воспользоваться функцией to_excel_auto_fmt() для правильного форматирования дат.
Данная функция позволяет форматировать данные непосредственно в Excel файле, поэтому на вход ей подается DataFrame с "родными" типами данных - (int, float, datetime, etc.).
Пример:
to_excel_auto_fmt(
df,
"/path/to/file.xlsx",
max_col_width=30,
autofilter=True,
freeze_top_rows=1,
fmt_int="#,##0",
fmt_float="#,##0.00",
fmt_date="yyyy.mm.dd",
fmt_datetime="yyyy.mm.dd hh:mm:ss")