Надеюсь, это не дубликат.
Это проблема, с которой я сталкиваюсь в сценарии, где я использую pandas и ExcelWriter для создания Excel для визуализации данных.
Чем я являюсьПопытка сделать это стиль ширины столбца и формат ячейки моих столбцов, в соответствии с общей шириной исходного заголовка каждого столбца (поэтому не все столбцы имеют одинаковую ширину). И, как дополнительная проблема, не все столбцы имеют одинаковый формат ячейки. Представьте, у меня есть 3 format_types.
Вот так я подхожу к проблеме, но надеюсь, что есть лучший способ.
Для format_type_1:
Из всех столбцов я получаю подсписок столбцов, которые должны иметь этот format_type_1. Но они не в порядке, возможно, столбцы col0, col4 и col10. Поэтому мне нужно знать положение столбцов в списке всех столбцов.
Затем я планирую использовать их, повторяя zip обоих списков (item, position), чтобы установить ширину и формат ячейки. Вот так:
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 раза, по одному для каждого из моих стилей форматирования, выбирая только столбцы, которые мне нужно отформатировать. Я чувствую, что это слишком много.
Дайте мне знать, если мне нужно уточнить. Благодарю.