Элементы в стиле Pandas выделяют диагональные и не диагональные элементы - PullRequest
0 голосов
/ 14 октября 2019

Я пытался выделить стиль основной диагонали и противоположных основных диагональных элементов в кадре данных панд.

Я увидел эту ссылку: Стиль панд: как выделить диагональные элементы

Это показывает, как выделить основную диагональ, но мне было интересно, как выделить две диагонали двумя разными цветами?

Вот мой фрейм данных:


import numpy as np
import pandas as pd


df = pd.DataFrame(data={'pred0': [10,   4],
                   'pred1': [0,   0],
            'total': [10,  4]},index=['true0','true1']
                   )

print(df)
       pred0  pred1  total
true0     10      0     10
true1      4      0      4

Моя попытка

# Credit: ALLOLZ
def highlight_diag(df):
    a = np.full(df.shape, '', dtype='<U24')
    np.fill_diagonal(a, 'background-color: yellow')
    return pd.DataFrame(a, index=df.index, columns=df.columns)

df.style.apply(highlight_diag, axis=None)

Но это только подсветка одной диагонали и не выделение другой диагонали. Как выделить обе диагонали.

Обязательно

          pred0          pred1         total
true0     10(green)      0(red)     10(no highlight)
true1      4(red)      0(green)      4(no highlight)

TIY.

1 Ответ

1 голос
/ 14 октября 2019

Это дает то, что вы хотите

import numpy as np
import pandas as pd

def highlight_diags(data):
    attr1 = 'background-color: lightgreen'
    attr2 = 'background-color: salmon'

    df_style = data.replace(data, '')
    np.fill_diagonal(df_style.values, attr1)
    np.fill_diagonal(np.flipud(df_style), attr2) 
    return df_style

df = pd.DataFrame(data={'pred0': [10,   4],
                   'pred1': [0,   0],
            'total': [10,  4]},index=['true0','true1']
                   )

df.style.apply(highlight_diags,axis=None)

enter image description here

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