Python Pandas: стиль заголовка столбца - PullRequest
0 голосов
/ 19 марта 2019

Я использую pandas styler , чтобы придать некоторым столбцам цвет фона, основанный на имени заголовка столбца.Хотя это работает так, как задумано, цвет фона заголовка столбца не меняется.

Вот часть моего сценария, в которой применяется ваш стиль:

def highlight_col(x):
    if x.name in added_columns:
        return ['background-color: #67c5a4']*x.shape[0]
    elif x.name in dropped_columns:
        return ['background-color: #ff9090']*x.shape[0]
    else:
        return ['background-color: None']*x.shape[0]



old = old.style.apply(highlight_col, axis=0)

Есть ли способприменить style.apply () - функцию не только к ячейкам под заголовком столбца, но и к полному столбцу, включая заголовок столбца?

Редактировать: Для пояснения приведен скриншотвывод Excel: снимок экрана вывода Excel

"Заголовок 2" должен иметь тот же цвет фона, что и ячейки под ним.

1 Ответ

0 голосов
/ 20 марта 2019

Хорошо, я думаю, что нашел способ обработать форматирование заголовка столбца, используя html 'селекторы':

Используя большую часть вашего кода в качестве настройки:

df = pd.DataFrame('some value', columns=['Header1','Header2','Header3'], index=np.arange(12))
added_columns = 'Header2'
dropped_columns = 'Header1'

def highlight_col(x):
    if x.name in added_columns:
        return ['background-color: #67c5a4']*x.shape[0]
    elif x.name in dropped_columns:
        return ['background-color: #ff9090']*x.shape[0]
    else:
        return ['background-color: None']*x.shape[0]


col_loc_add = df.columns.get_loc(added_columns) + 2
col_loc_drop = df.columns.get_loc(dropped_columns) + 2

df.style.apply(highlight_col, axis=0)\
  .set_table_styles(
     [{'selector': f'th:nth-child({col_loc_add})',
       'props': [('background-color', '#67c5a4')]},
     {'selector': f'th:nth-child({col_loc_drop})',
       'props': [('background-color', '#ff9090')]}])

Вывод:

enter image description here

Примечание. Я использую f-строку, которая является функцией Python 3.6+.

...