これが重複していないことを願っています。
これは、パンダと 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 はスタイルを最初のものに適用します。
これを行うより良い方法はありますか?これが方法である場合、書式設定する必要がある列のみを取得して、書式設定スタイルごとに 1 回ずつ、このすべてを 3 回実行する必要があるためです。多すぎる気がします。
さらに明確にする必要がある場合はお知らせください。ありがとう。