将 Pandas DataFrame 转换为 Excel 工作表时删除标题中的默认格式

Art*_*urH 6 python excel dataframe pandas xlsxwriter

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

Par*_*ait 20

考虑将标题样式属性调整为全局设置:

import pandas as pd

pd.io.formats.excel.ExcelFormatter.header_style = None


...
mydataframe.to_excel(...)
Run Code Online (Sandbox Code Playgroud)

最近的 API 更改需要稍微修改才能引用该属性:

import pandas as pd

from pandas.io.formats import excel
excel.ExcelFormatter.header_style = None

...
mydataframe.to_excel(...)
Run Code Online (Sandbox Code Playgroud)


pat*_*ng1 6

主要基于 Xlsxwriter 文档(此处链接)中提供的示例,下面的完全可重现示例删除了 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__)
Run Code Online (Sandbox Code Playgroud)

预期输出:

0.24.2
Run Code Online (Sandbox Code Playgroud)

预期产出

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