#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, надеюсь, что это ясно, если не я добавлю пример моего ответа