将 pandas DataFrame 转换为 excel 表时删除标题中的默认格式

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

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

python excel pandas dataframe xlsxwriter
3个回答
9
投票

主要基于 Xlsxwriter 文档中提供的示例(此处链接),下面完全可重现的示例删除了 pandas 0.24.2 中的默认 pandas 标头格式。值得注意的是,在

df.to_excel()
中,我正在更改
header
startrow
参数。

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


9
投票

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

import pandas as pd

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


...
mydataframe.to_excel(...)

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

import pandas as pd

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

...
mydataframe.to_excel(...)

0
投票

关键的解释是:pandas写一个df的header是用

set_cell()
的。单元格格式(在 xlsxwriter 中,“格式”是您必须添加到工作表对象的格式对象)可以NOT
set_row()
覆盖。如果您在标题行中使用
set_row()
,它将不起作用,您必须使用
set_cell()

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