对 pandas 中的数据进行排序后,我将其保存在 Excel 中。这个时候我们正在尝试通过改变格式来提高可读性。我同时指定了数字格式和背景颜色,但只指定了两者之一,出现错误。我很确定这不是一个错误,这只是“我不太理解”。但我不知道我哪里做错了。我希望得到您的帮助。
下面是我编写的示例代码以及运行结果。第一个代码是我格式化数字时的。可以正常使用。
df = pd.DataFrame({
'Name': ['John', 'Isac'],
'Value': [100000, 300000000]
})
with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
format_with_commas = workbook.add_format({'num_format':'#,##0'})
worksheet.set_column('B:B', 15, format_with_commas)
但是,问题是,如果在这里编写代码指定背景颜色,数字格式就不起作用了。我已将代码和执行结果作为图像包含在内。
df = pd.DataFrame({
'Name': ['John', 'Isac'],
'Value': [100000, 300000000]
})
styled_df = df.style.set_properties(**{'background-color':'yellow', 'color':'black'})
with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as writer:
styled_df.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
format_with_commas = workbook.add_format({'num_format':'#,##0'})
worksheet.set_column('B:B', 15, format_with_commas)
如果我的方法不正确,请告诉我哪里错了。或者,如果此代码已过时,也请指出。
Styler.format
:
使用输出格式 Styler.to_excel 时,Styler.format 会被忽略,因为 Excel 和 Python 具有本质上不同的格式结构。但是,可以使用数字格式伪 CSS 属性来强制使用 Excel 允许的格式。查看示例。
所以尝试number-format伪CSS属性,参见最后一段:
styled_df = df.style.set_properties(**{'background-color':'yellow', 'color':'black'})
pseudo_css = 'number-format: #,##0'
with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as writer:
(styled_df.map(lambda v: pseudo_css, subset=['Value'])
.to_excel(writer, sheet_name='test', index=False))
对于较旧的 pandas 版本:
styled_df = df.style.set_properties(**{'background-color':'yellow', 'color':'black'})
pseudo_css = 'number-format: #,##0'
with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as writer:
(styled_df.applymap(lambda v: pseudo_css, subset=['Value'])
.to_excel(writer, sheet_name='test', index=False))