【问题标题】:Remove default formatting in header when converting pandas DataFrame to excel sheet将 pandas DataFrame 转换为 excel 工作表时删除标题中的默认格式
【发布时间】:2019-08-10 06:53:58
【问题描述】:

这是一次又一次地被回答和重新回答的问题,因为答案随着熊猫的更新而不断变化。我尝试了一些我在这里和其他地方在线找到的解决方案,但在当前版本的 pandas 上没有一个对我有用。有谁知道当前 2019 年 3 月的 pandas 0.24.2 修复了删除 DataFrame 在将其转换为 Excel 工作表时为其标题提供的默认样式?由于优先级问题,简单地使用 xlsxwriter 覆盖样式不起作用。

【问题讨论】:

标签: python excel pandas dataframe xlsxwriter


【解决方案1】:

主要基于 Xlsxwriter 文档 (link here) 中提供的示例,以下完全可重现的示例删除了 pandas 0.24.2 中的默认 pandas 标头格式。值得注意的是,在df.to_excel() 中,我正在更改headerstartrow 参数。

import xlsxwriter
import pandas as pd
import numpy as np

# Creating a dataframe 
df = pd.DataFrame(np.random.randn(100, 3), columns=list('ABC'))
column_list = df.columns
# Create a Pandas Excel writer using XlsxWriter engine.
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

# Get workbook and worksheet objects
workbook  = writer.book
worksheet = writer.sheets['Sheet1']


for idx, val in enumerate(column_list):
    worksheet.write(0, idx, val)

writer.save()

print(pd.__version__)

预期输出:

0.24.2

【讨论】:

  • 聪明的解决方案。因此,您实际上只是删除了列标签,然后在 for 循环中将它们重新添加进来,从而绕过了默认的标题样式。效果很好,谢谢!
【解决方案2】:

关键的解释是:pandas用set_cell()写了一个df的header。单元格格式(在 xlsxwriter 中,“格式”是您必须添加到工作表对象的 FormatObject)可以set_row() 覆盖。如果您在标题行中使用set_row(),它将不起作用,您必须使用set_cell()

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2014-11-26
    • 2019-10-26
    • 2019-08-31
    • 2022-07-22
    相关资源
    最近更新 更多