Pandas DataFrame XlsxWriter и даты.
Как сделать форматирование дат их Pandas DataFrame при сохранении в XlsxWriter.
Столкнулся с проблемой, что задание форматирования дат для колонок с датами не работает в XlsxWriter
.
Есть вот такой код:
df.to_excel(writer, "Sheet1", index=False, startrow=0)
y_m_format = writer.book.add_format({'num_format': 'yyyy mmm'}),
worksheet.set_column('A:A', -1, y_m_format)
По идее, этот код должен форматировать даты в колонке A
как 2022 май
, но этого не происходило, чтобы я ни делал.
Покопавшись в issues на гитхаб XlsxWriter
выяснилось (тут), что если формат колонки с датами в DataFrame
- datetime64[ns]
, то при соборке Xlsx файла, Pandas
перезаписывает формат, который задает пользователь.
Вот такой отвт от мейнтейнера репозитория:
Correct, that is what is happening. The Cell format added by Pandas (using xlsxwriter) is overriding the Column format that you provide.
Соответственно, он же предложил альтернативный вариант - задавать фомат при создании writer'a
с помощью параметров datetime_format
и date_format
:
with pd.ExcelWriter('example.xlsx', engine='xlsxwriter', datetime_format='yyyy mmm') as writer:
У этого способа есть один большой недостаток: все даты из DataFrame
будут в одном формате, который не получится изменить програмно.