【发布时间】:2015-07-10 13:33:55
【问题描述】:
我正在尝试将 pandas DataFrame 写入 .xlsx 文件,其中不同的数字列将具有不同的格式。例如,有些只显示两位小数,有些不显示,有些会格式化为带有“%”符号的百分比等。
我注意到DataFrame.to_html() 有一个formatters 参数,它允许这样做,将不同的格式映射到不同的列。但是,DataFrame.to_excel() 方法上没有类似的参数。我们拥有的最多的是float_format,它对所有数字都是全局的。
我已经阅读了许多至少与我的问题部分相关的 SO 帖子,例如:
-
Use the older
openpyxlengine to apply formats one cell at a time。这是我最成功的方法。但这意味着编写循环以逐个单元格地应用格式、记住偏移量等。 -
Render percentages by changing the table data itself into strings。改变实际数据的路线启发我尝试通过在写入 Excel 之前在每一列上调用
round()来处理小数位格式 - 这也有效,但我想避免改变数据。 - 其他分类,主要是关于日期格式
pandas API 中是否还有其他更方便的与 Excel 相关的函数/属性可以在这里提供帮助,或者在 openpyxl 上提供类似的东西,或者可能以某种方式将输出格式元数据直接指定到 DataFrame 中的每一列上然后会被不同的输出器向下游解释吗?
【问题讨论】:
-
删除所有格式怎么样?有谁知道有没有快速的方法?
标签: python excel pandas openpyxl