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 будут в одном формате, который не получится изменить програмно.

Теги: Python, DataFrame

Комментарии ()