pandas стиль set_table_styles для столбцов / индекса не работает с to_excel - PullRequest
0 голосов
/ 28 мая 2020

Рассмотрим этот манекен 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 работать вместе?

1 Ответ

0 голосов
/ 02 июня 2020

Похоже, это ошибка, которая все еще существует в текущей версии (1.0.3). Я обнаружил ошибку в их репо: https://github.com/pandas-dev/pandas/issues/34438

Попробую обновить это, когда она будет решена ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...