XlsxWriter: set_column() с одним форматом для нескольких прерывистых столбцов

Я хочу записать свой кадр данных Pandas в Excel и применить формат к нескольким отдельным столбцам (например, A и C, но не B), используя однострочный код как таковой:

writer = pd.ExcelWriter(filepath, engine='xlsxwriter')
my_format = writer.book.add_format({'num_format': '#'})

writer.sheets['Sheet1'].set_column('A:A,C:C', 15, my_format)

Это приводит к следующей ошибке:

Файл ".../python2.7/site-packages/xlsxwriter/worksheet.py", строка 114, в column_wrapper

cell_1, cell_2 = [столбец + '1' для столбца в args[0].split(':')] ValueError: слишком много значений для распаковки

Он не принимает синтаксис 'A:A,C:C'. Возможно ли применить такое же форматирование без вызова set_column() для каждого столбца?


person Qululu    schedule 16.08.2016    source источник


Ответы (2)


Если диапазоны столбцов не являются смежными, вам придется вызывать set_column() для каждого диапазона:

writer.sheets['Sheet1'].set_column('A:A', 15, my_format)
writer.sheets['Sheet1'].set_column('C:C', 15, my_format)

Обратите внимание: чтобы сделать это программно, вы также можете использовать числовой диапазон:

for col in (0, 2):
    writer.sheets['Sheet1'].set_column(col, col, 15, my_format)
person jmcnamara    schedule 16.08.2016

Или вы можете ссылаться на такие столбцы:

for col in ('X', 'Z'):
        writer.sheets['Sheet1'].set_column(col+':'+col, None, my_format)
person Will Bachrach    schedule 12.09.2019