Не используйте pandas для форматирования файла, используйте их для того, что у них лучше всего, pandas для обработки данных и xlsxwriter для формата.
Таким образом, ваш код должен выглядеть примерно так this:
import pandas as pd
# Create your dataframe
df = pd.DataFrame({'Num': [321,452,444,111],
'Des': ['pencil','pen','key','eraser'],
'price': [23,12,32,49],
'percentage': [24,29,33,14]})
# Divide by 100 the column with the percentages
df['percentage'] = df['percentage'] / 100
# Pass the df into the xlsxwriter
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Define the formats
cell_format1 = workbook.add_format({'num_format': '$#,##0'})
cell_format2 = workbook.add_format({'num_format': '0%'})
# Set the columns width and format
worksheet.set_column('C:C', 12, cell_format1)
worksheet.set_column('D:D', 12, cell_format2)
# Write the file
writer.save()
Вывод:
Для получения дополнительной информации о классе формата xlsxwriter смотрите здесь В нем действительно есть все, что вам нужно.