Предлагаемое решение для процентного форматирования:
with pd.ExcelWriter('test_format.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
percent_format = writer.book.add_format({'num_format': '0.00%'})
worksheet = writer.book.worksheets_objs[0]
for col in ['A','C','E']:
worksheet.set_column(f'{col}:{col}', None, percent_format)
действительно добавляет проценты к столбцам A, C и E.
Однако он работает только для объекта DataFrame и не может использоваться со стилером, что означает, что все остальное форматирование должно выполняться с помощью объекта записи:
with pd.ExcelWriter('test_format.xlsx') as writer:
df.style.applymap(color_negative_red).to_excel(writer, sheet_name='Sheet1', index=False)
percent_format = writer.book.add_format({'num_format': '0.00%'})
worksheet = writer.book.worksheets_objs[0]
for col in ['A','C','E']:
worksheet.set_column(f'{col}:{col}', None, percent_format)