1

我希望这不是重复的。

这是我在使用 pandas 和 ExcelWriter 为数据可视化创建 excel 的脚本中遇到的问题。

我要做的是根据每列原始标题的总宽度设置列宽和单元格格式的样式(因此并非所有列的宽度都相同)。而且,作为一个额外的问题,并非所有列都具有相同的单元格格式。想象一下我有 3 个 format_types。

这就是我解决问题的方式,但我希望有更好的方法。

对于 format_type_1:

从所有列中,我得到了需要具有该 format_type_1 的列的子列表。但它们不按顺序排列,可能列是 col0、col4 和 col10。所以我需要知道所有列列表中列的位置。

然后,我计划使用它们迭代两个列表(项目、位置)的 zip,以设置宽度和单元格格式。像这样:

widths = [len(x) for x in sublist]
for i, width in (zip(i, widths)):
    worksheet.set_column(i, i, width*0.9, cell_format)

所以,回过头来,我有我的完整列列表:

list = [ 'Item1','Item2','Item3', ... ,'Itemn' ]

这就是我获取列子列表的方式

sublist = [elem for elem in list if elem in ('Item1', 'Item4')]

但是现在,我不知道如何获取这些元素在原始列表中的位置的列表。我可以定义它们,说位置是 0 和 3,但我宁愿不这样做。如果位置不正确,则 set_column 会将样式应用于第一个样式。

有没有更好的方法来做到这一点?因为如果是这样的话,我将不得不做这件事 3 次,每个格式样式一个,只取我需要格式化的列。我觉得太过分了。

让我知道是否需要进一步澄清。谢谢。

4

0 回答 0