Я хотел бы выделить определенные заголовки столбцов перед экспортом моего фрейма данных в Excel.
Я попытался использовать Pandas Styler, чтобы выделить указанные столбцы.
cm = sns.light_palette("green", as_cmap = True)
etc = etc.style.background_gradient(cmap=cm)
Я начал с этого базового кода, чтобы выделить весь свой фрейм данных в надежде скорректировать и уточнить свой выбор. Однако даже при таком широком подходе выделяются не все значения. Желаемым результатом является выделение только заголовков столбцов, если это невозможно, то только данных, связанных с конкретным заголовком.






Вот ответ, основанный на документации для xlsxwriter:
Начните с создания объекта xlsxwriter и записи в него фрейма данных. header=False означает, что мы не пишем имена столбцов, а startrow=1 оставляет пустую строку вверху (куда мы можем поместить наши пользовательские столбцы рядом). Затем мы получаем соответствующие объекты для workbook и worksheet.
writer = pd.ExcelWriter("output.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']
Создаем формат заголовка:
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BC',
'border': 1})
Допустим, у вас есть три столбца: A, B и C, но вы хотите выделить только A и C. Мы составляем список имен столбцов, которые мы хотим выделить, и выборочно применяем к ним форматирование:
columns_to_highlight = ['A', 'C']
for col_num, col_name in enumerate(df.columns.values):
if col_name in columns_to_highlight:
worksheet.write(0, col_num + 1, col_name, header_format)
else:
worksheet.write(0, col_num + 1, col_name)
writer.save()
Спасибо, это сработало отлично. Я очень ценю ваше время и усилия, особенно хорошо документированный ответ! Как кто-то, все еще изучающий это, был очень признателен!
background_gradientработает по назначению — создает градиент на основе значений ячеек.