Рассмотрим этот манекен DataFrame
ниже:
df = pd.DataFrame(np.random.rand(15).reshape(5,3), columns='x y z'.split())
# df
x y z
0 0.725005 0.318429 0.918186
1 0.883890 0.993736 0.795322
2 0.687472 0.328307 0.108520
3 0.608381 0.193478 0.469421
4 0.598708 0.276778 0.433235
Предположим, что применен простой pandas стиль:
style = df.style \
.set_table_styles([{'selector': 'th', 'props': [('background-color', 'orange')]}]) \
.applymap(lambda x: 'color: red' if x >.5 else 'color: blue')
Кажется, style.render()
подтверждает, что стиль применен для th
и td
(фрагмент ниже):
<style type="text/css" >
#T_8b7f1124_a115_11ea_8cf8_48452026764f th {
background-color: orange;
} #T_8b7f1124_a115_11ea_8cf8_48452026764frow0_col0 {
color: red;
} #T_8b7f1124_a115_11ea_8cf8_48452026764frow0_col1 {
color: blue;
} ...
При экспорте в виде html все цвета отображаются должным образом. Однако, когда я применяю to_excel
, подбирается только элементарный стиль. Заголовки / индекс остаются цветами по умолчанию:
style.to_excel(r'somefile.xlsx')
Я пробовал как xlsxwriter
, так и openpyxl
в качестве движка, оба демонстрируют одинаковое поведение.
Я искал несколько вопросов по set_table_styles
и Styler.to_excel
, но все, кажется, обеспокоены отдельными элементами, похоже, не касались их комбинации. Пробовал искать журнал проблем на github, пока не нашел совпадений.
Кому-нибудь повезло заставить set_table_styles
и Styler.to_excel
работать вместе?