Получить элемент, если в списке и его положение в списке, & небольшое руководство в ExcelWriter - PullRequest
1 голос
/ 07 октября 2019

Надеюсь, это не дубликат.

Это проблема, с которой я сталкиваюсь в сценарии, где я использую 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 раза, по одному для каждого из моих стилей форматирования, выбирая только столбцы, которые мне нужно отформатировать. Я чувствую, что это слишком много.

Дайте мне знать, если мне нужно уточнить. Благодарю.

...