我目前正在使用XlsxWriter将数据框输出到Excel文件。我的数据帧如下。
Num Des price percentage
321 pencil $23 24%
452 pen $12 29%
444 key $32 33%
111 eraser $49 14%
而且我使用的美元和百分号由代码表示:
df['price'] = df['price'].apply(lambda x: format(x, '.0%'))
df['percentage'] = df['percentage'].apply(lambda x: format(x, "${:20,.0f}"))
但是在我通过XlsxWriter将数据框输出到Excel之后,带符号的值变成了字符串。
有没有一种方法可以保持数字类型?
不要使用熊猫来格式化文件,请使用它们来做最好的事情,使用熊猫来进行数据处理,并使用xlsxwriter进行格式化。
所以您的代码应该是这样的:
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格式类的更多信息,请看here,它确实具有您需要的一切。