写入Excel后如何保留带符号的值作为数据框中的数字?

问题描述 投票:0回答:1

我目前正在使用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之后,带符号的值变成了字符串。

有没有一种方法可以保持数字类型?

python excel pandas dataframe xlsxwriter
1个回答
0
投票

不要使用熊猫来格式化文件,请使用它们来做最好的事情,使用熊猫来进行数据处理,并使用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()

输出:

enter image description here

有关xlsxwriter格式类的更多信息,请看here,它确实具有您需要的一切。

© www.soinside.com 2019 - 2024. All rights reserved.