Python:在多张纸上将pandasDataFrame写入Excel的最快方法

我需要将24个pandas数据框(140列x 400行)导出到Excel中 ,每个都放到不同的工作表中。

我正在使用pandas的内置ExcelWriter 。 运行24个场景,需要:

51秒写入.xls文件(使用xlwt

86秒写入.xlsx文件(使用XlsxWriter

141秒写入.xlsm文件(使用openpyxl

只需运行21秒程序(不输出Excel)

写入.xls的问题是电子表格不包含格式化样式,所以如果我在Excel中打开它,select一列,然后单击“逗号”button来格式化数字,它会告诉我:'style comma not found ”。 我没有把这个问题写入一个.xlsx ,但是速度更慢。

有关如何使出口速度更快的build议? 我不能成为第一个有这个问题的人,但经过几个小时的search论坛和网站,我还没有find任何明确的解决scheme。

我唯一能想到的就是使用Python导出到csv文件,然后编写一个Excelmacros将所有CSV合并到一个电子表格中。

.xls文件是10 MB,而.xlsx 5.2 MB

谢谢!

这里是不同的Python到Excel模块的基准 。

以下是在发布时使用最新版本模块的140列x(400 x 24)行的输出:

 Versions: python : 2.7.7 openpyxl : 2.0.5 pyexcelerate: 0.6.3 xlsxwriter : 0.5.7 xlwt : 0.7.5 Dimensions: Rows = 9600 (400 x 24) Cols = 140 Times: pyexcelerate : 11.85 xlwt : 17.64 xlsxwriter (optimised): 21.63 xlsxwriter : 26.76 openpyxl (optimised): 95.18 openpyxl : 119.29 

与任何基准一样,结果将取决于Python /模块版本,CPU,RAM和磁盘I / O以及基准本身。 所以一定要validation这些结果为你自己的设置。

另外,由于您特别询问了pandas,请注意PyExcelerate 不受支持 。

对于它的价值,这是我如何格式输出在xlwt。 文档是(或者至less是)非常斑点,所以我不得不猜测大部分!

 import xlwt style = xlwt.XFStyle() style.font.name = 'Courier' style.font.height = 180 style.num_format_str = '#,##0' # ws0 is a worksheet ws0.write( row, col, value, style ) 

此外,我相信我试图在Excel中格式化生成的电子表格(Office 2010版本)时重复您的错误消息。 这很奇怪,但一些下拉工具栏格式选项的工作,有些则不。 但是,如果我通过右键单击“格式化单元格”,它们看起来都可以正常工作。