pandas xlsxwriter,格式 header
pandas xlsxwriter, format header
我正在使用 xlsxwriter 保存 pandas DataFrame to_excel。除了更改 header 的字体之外,我已经设法格式化我的所有数据(设置列宽、字体大小等),但我找不到这样做的方法。这是我的例子:
import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
data.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
试图为 header 设置格式的倒数第二行什么也没做。
我认为您需要先重置默认 header 样式,然后您可以更改它:
pd.core.format.header_style = None
总计:
import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
pd.core.format.header_style = None
data.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
由jmcnamara解释,谢谢:
在 Excel 中,单元格格式覆盖行格式覆盖列 format.The pd.core.format.header_style
转换为格式并应用于 header 中的每个单元格。因此默认值不能被 set_row()
覆盖。将 pd.core.format.header_style
设置为 None
意味着 header 单元格没有用户定义的格式,因此它可以被 set_row()
.
覆盖
编辑:在版本 0.18.1
中,您必须更改
pd.core.format.header_style = None
至:
pd.formats.format.header_style = None
编辑:从 0.20 版开始,这又发生了变化
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
感谢krvkir。
编辑:从版本 0.24 开始,现在需要这样做
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
在pandas0.20中接受答案的解决方案又变了。
应设置为 None 的格式可在以下位置找到:
pandas.io.formats.excel.header_style
遇到此 post 并正在使用 Pandas 0.20.1 的任何人的更新。
看来现在需要的代码是
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
显然 excel
子模块不会自动导入,因此只需单独尝试 pandas.io.formats.excel.header_style = None
就会引发 AttributeError
.
对于 pandas 0.24:
以下不再有效:
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
相反,创建一个单元格格式 object,并且 re-write 第一行的内容(您的 header)使用新的单元格格式 object 一次一个单元格.
现在,你是未来的证明。
使用以下伪代码:
# [1] write df to excel as usual
writer = pd.ExcelWriter(path_output, engine='xlsxwriter')
df.to_excel(writer, sheet_name, index=False)
# [2] do formats for other rows and columns first
# [3] create a format object with your desired formatting for the header, let's name it: headercellformat
# [4] write to the 0th (header) row **one cell at a time**, with columnname and format
for columnnum, columnname in enumerate(list(df.columns)):
worksheet.write(0, columnnum, columnname, headercellformat)
Pandas 0.25 的另一个选项(可能也是 0.24)。可能不是最好的方法,但它对我有用。
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
如果您不想完全为 pandas 设置 header 样式,您也可以将 header=False
传递给 ExcelWriter
:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(3, 5),
columns=pd.date_range('2019-01-01', periods=5, freq='M'))
file_path='output.xlsx'
writer = pd.ExcelWriter(file_path, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', header=False, index=False )
workbook = writer.book
fmt = workbook.add_format({'num_format': 'mm/yyyy', 'bold': True})
worksheet = writer.sheets['Sheet1']
worksheet.set_row(0, None, fmt)
writer.save()
很遗憾 add_format 不再可用
我正在使用 xlsxwriter 保存 pandas DataFrame to_excel。除了更改 header 的字体之外,我已经设法格式化我的所有数据(设置列宽、字体大小等),但我找不到这样做的方法。这是我的例子:
import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
data.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
试图为 header 设置格式的倒数第二行什么也没做。
我认为您需要先重置默认 header 样式,然后您可以更改它:
pd.core.format.header_style = None
总计:
import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
pd.core.format.header_style = None
data.to_excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
由jmcnamara解释,谢谢:
在 Excel 中,单元格格式覆盖行格式覆盖列 format.The pd.core.format.header_style
转换为格式并应用于 header 中的每个单元格。因此默认值不能被 set_row()
覆盖。将 pd.core.format.header_style
设置为 None
意味着 header 单元格没有用户定义的格式,因此它可以被 set_row()
.
编辑:在版本 0.18.1
中,您必须更改
pd.core.format.header_style = None
至:
pd.formats.format.header_style = None
编辑:从 0.20 版开始,这又发生了变化
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
感谢krvkir。
编辑:从版本 0.24 开始,现在需要这样做
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
在pandas0.20中接受答案的解决方案又变了。
应设置为 None 的格式可在以下位置找到:
pandas.io.formats.excel.header_style
遇到此 post 并正在使用 Pandas 0.20.1 的任何人的更新。
看来现在需要的代码是
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
显然 excel
子模块不会自动导入,因此只需单独尝试 pandas.io.formats.excel.header_style = None
就会引发 AttributeError
.
对于 pandas 0.24:
以下不再有效:
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
相反,创建一个单元格格式 object,并且 re-write 第一行的内容(您的 header)使用新的单元格格式 object 一次一个单元格.
现在,你是未来的证明。
使用以下伪代码:
# [1] write df to excel as usual
writer = pd.ExcelWriter(path_output, engine='xlsxwriter')
df.to_excel(writer, sheet_name, index=False)
# [2] do formats for other rows and columns first
# [3] create a format object with your desired formatting for the header, let's name it: headercellformat
# [4] write to the 0th (header) row **one cell at a time**, with columnname and format
for columnnum, columnname in enumerate(list(df.columns)):
worksheet.write(0, columnnum, columnname, headercellformat)
Pandas 0.25 的另一个选项(可能也是 0.24)。可能不是最好的方法,但它对我有用。
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None
如果您不想完全为 pandas 设置 header 样式,您也可以将 header=False
传递给 ExcelWriter
:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(3, 5),
columns=pd.date_range('2019-01-01', periods=5, freq='M'))
file_path='output.xlsx'
writer = pd.ExcelWriter(file_path, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', header=False, index=False )
workbook = writer.book
fmt = workbook.add_format({'num_format': 'mm/yyyy', 'bold': True})
worksheet = writer.sheets['Sheet1']
worksheet.set_row(0, None, fmt)
writer.save()
很遗憾 add_format 不再可用