首页 文章

Pandas:导出到Excel时如何格式化行和列(行格式优先)?

提问于
浏览
2

我正在使用pandas和xlsxwriter将大量数据帧导出并格式化为Excel .

xlsxwriter文档提到:http://xlsxwriter.readthedocs.io/worksheet.html?highlight=set_column

A row format takes precedence over a default column format

Precedence means that, if you format column B as percentage, and then row 2 as bold, cell B2 won't be bold and in % - it will be bold only, but not in %!

我在下面提供了一个例子 . Is there a way around it? 也许是xlsxwriter以外的引擎?将数据帧导出为excel后,可能会采用某种方式来应用格式?

我是先格式化行还是稍后格式化列,或者反之亦然 .

它没有在下面的示例中显示,但在我的代码中,我将多个具有相同列的数据帧导出到同一个Excel工作表 . 数据框相当于Excel Pivot表,底部有一个“total”行 . 我希望 Headers 行和总行为粗体,并且每列具有特定的格式,具体取决于数据(%,千,百万等) . 示例代码如下 .

思考?谢谢!

import pandas as pd

writer = pd.ExcelWriter('test.xlsx')
wk = writer.book.add_worksheet('Test')

fmt_bold = writer.book.add_format({'bold':True})
fmt_pct = writer.book.add_format({'num_format': '0.0%'})

wk.write(1,1,1)
wk.write(2,1,2)

wk.set_column(1,1, None, fmt_pct)
wk.set_row(1,None, fmt_bold)

writer.close()

2 回答

  • 1

    正如@jmcnamara所述,openpyxl提供了不同的格式选项,因为它允许您基本上处理工作表中的数据帧 . NB . openpyxl不支持行或列格式 .

    openpyxl dataframe_to_rows() 函数将数据帧逐行转换为值生成器,允许您应用您喜欢的任何格式或其他处理 .

  • 2

    在这种情况下,您需要创建另一种格式,它是行和列格式的组合,并将其应用于单元格 .

    为此,您需要遍历数据框并直接调用XlsxWriter,而不是使用Pandas-Excel界面 .

    或者,您可以使用OpenPyXL作为pandas Excel引擎 . 最近版本的Pandas界面添加了在使用OpenPyXL后在编写数据帧后为Excel数据添加格式的功能 .

相关问题