worksheet.add_format() 格式化我的标题

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

我正在尝试格式化我的 df,以便数据有 4 个小数位,但它也不断格式化我的标题。 worksheet.add_format() 时是否可以跳过第一行?

数据框:

DateReferencia  2023    2024    2025    2026    2027    2028
Date                        
02/01/2024  2.9233  1.5500  2.0 2.0 2.0 NaN
03/01/2024  2.9233  1.5500  2.0 2.0 2.0 NaN
04/01/2024  2.9313  1.5872  2.0 2.0 2.0 NaN
05/01/2024  2.9221  1.5872  2.0 2.0 2.0 NaN
08/01/2024  2.9208  1.5922  2.0 2.0 2.0 NaN

格式化并将 df 发送到 Excel 的代码:

writer = pd.ExcelWriter("pandas_column_formats.xlsx", engine="xlsxwriter")
df.to_excel(writer, sheet_name='Sheet1')


workbook = writer.book
worksheet = writer.sheets["Sheet1"]

format1 = workbook.add_format({"num_format": "0.0000"})
worksheet.set_column(1,len(df), None, format1)
writer.close()

输出:

DateReferencia 2,023.0000   2,024.0000  2,025.0000  2,026.0000  2,027.0000  2,028.0000
Date
02/01/2024  2.9233  1.5500  2.0000  2.0000  2.0000  
03/01/2024  2.9233  1.5500  2.0000  2.0000  2.0000  
04/01/2024  2.9313  1.5872  2.0000  2.0000  2.0000  
05/01/2024  2.9221  1.5872  2.0000  2.0000  2.0000  
08/01/2024  2.9208  1.5922  2.0000  2.0000  2.0000  
python pandas formatting xlsxwriter
1个回答
0
投票

pandas
已经将一些单元格格式应用于标题和行,因此您应该检查此官方页面:https://xlsxwriter.readthedocs.io/working_with_pandas.html#formatting-of-the-dataframe-headers(TLDR :先写入不带标题的数据,然后添加自定义格式的标题)

我无法使用您提供的代码复制您的问题,因此它也可能特定于您正在使用的

pandas
xlsxwriter
的版本。您可以尝试以下步骤:

  1. 按照官方建议,使用不同的格式化程序分别写入数据+标题
  2. 将标题设置为字符串以避免格式化(例如
    df.columns = df.columns.astype(str)
  3. 在导出之前调整数据框中的值(例如
    df = df.applymap(lambda x: f"{x:.4f}" if isinstance(x, (int,float)) else x)
© www.soinside.com 2019 - 2024. All rights reserved.