将 pandas DataFrame 转换为 excel sheet 时删除 header 中的默认格式
Remove default formatting in header when converting pandas DataFrame to excel sheet
这个问题已经被回答 re-answered 一次又一次,因为答案随着 pandas 的更新而不断变化。我尝试了在这里和网上其他地方找到的一些解决方案,其中 none 在当前版本的 pandas 上对我有用。有谁知道当前的,2019 年 3 月,pandas 0.24.2,修复删除 DataFrame 在将其转换为 excel sheet 时为其 header 提供的默认样式?由于优先级问题,仅使用 xlsxwriter 覆盖样式不起作用。
主要基于 Xlsxwriter 文档 (link here) 中提供的示例,下面完全可重现的示例删除了 pandas 0.24 中的默认 pandas header 格式。 2.值得注意的是,在 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
关键的解释是:pandas用set_cell()
写了一个df的header。单元格格式(在 xlsxwriter 中,"format" 是您必须添加到工作表对象的 FormatObject)可以 NOT 被 set_row()
覆盖。如果您对 header 行使用 set_row()
,它将不起作用,您必须使用 set_cell()
.
考虑将 header 样式 属性 调整为全局设置:
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
...
mydataframe.to_excel(...)
这个问题已经被回答 re-answered 一次又一次,因为答案随着 pandas 的更新而不断变化。我尝试了在这里和网上其他地方找到的一些解决方案,其中 none 在当前版本的 pandas 上对我有用。有谁知道当前的,2019 年 3 月,pandas 0.24.2,修复删除 DataFrame 在将其转换为 excel sheet 时为其 header 提供的默认样式?由于优先级问题,仅使用 xlsxwriter 覆盖样式不起作用。
主要基于 Xlsxwriter 文档 (link here) 中提供的示例,下面完全可重现的示例删除了 pandas 0.24 中的默认 pandas header 格式。 2.值得注意的是,在 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
关键的解释是:pandas用set_cell()
写了一个df的header。单元格格式(在 xlsxwriter 中,"format" 是您必须添加到工作表对象的 FormatObject)可以 NOT 被 set_row()
覆盖。如果您对 header 行使用 set_row()
,它将不起作用,您必须使用 set_cell()
.
考虑将 header 样式 属性 调整为全局设置:
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
...
mydataframe.to_excel(...)