Панды Python не форматируют первый столбец

#python #pandas

Вопрос:

В настоящее время я пишу скрипт на python, который разбивает данные из файла excel на разные таблицы и сохраняет данные в новом файле excel. Пока все работает, но я обнаружил проблему, которую на самом деле не понимаю. В конце моего сценария я хочу отформатировать столбцы моего целевого файла excel. Что я делаю, так это вычисляю максимальный размер каждого столбца и сохраняю его как переменную, за которой следует вызов функции «set_column», например:

 format = writer.book.add_format({'text_wrap': True, 'align': 'left', 'valign': 'top'}) for column in df:  writer.sheets[sheet_name].set_column(idx, idx, col_len, format)  

Он идеально подходит для каждой колонки, но для первой. В первой колонке у меня есть дата, записанная в определенном пользователем формате. Все остальные колонки работают идеально.

Если я отлажу и проверю, отформатирован ли также первый столбец в цикле, то да, это так. Я действительно не понимаю этого плохого поведения. Не мог бы кто-нибудь, пожалуйста, помочь?

Большое спасибо! рельс

Ответ №1:

лично я использую reset_index() для добавления индекса в качестве столбца и использования index=False аргумента при использовании .to_excel() , это должно затем работать с форматированием столбца.

Пример:

 df.reset_index() writer = pd.ExcelWriter(('file_name.xlsx'), engine='xlsxwriter') df.to_excel(writer, 'Example Sheet', index=False)  

Примечание: это не будет работать для многоиндексированных кадров данных

Вы также можете попробовать

 pandas.io.formats.excel.ExcelFormatter  

такие как

 import pandas.io.formats.excel pandas.io.formats.excel.ExcelFormatter.header_style = None  

Комментарии:

1. Эй, Патрик, спасибо за ваш ответ, но я действительно не понимаю, как это должно помочь с неправильным форматированием первого столбца. В настоящее время я не использовал эту reset_index() функцию, но я пытался, и это не решило проблему. index=False было уже готово.

2. работа по основывается на том, что встроенный форматирование применяется только к индексу столбца, поэтому с помощью .reset_index() этого вы можете сделать индексировать столбец в фрейм данных, как и любой другой, после этого index=False аргумента в .to_excel() вызове нового индекса столбца, который был включен в файл Excel, надеюсь, что это ясно, если не я добавлю пример моего ответа