Условно применить цвет градиента к ячейкам данных на основе значений из другого столбца? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть датафрейм, который выглядит следующим образом. Я хотел бы применить условный цвет к ячейкам в столбце «col» на основе их соответствующего значения в столбце «prb». Изображение справа - это то, где я до сих пор, но я не могу заставить работать «градиент».

enter image description here enter image description here

Код ниже «работает», и проблема в том, что c1 явно определяется как «background-красный цвет'. Но это действительно должно быть условие, которое применяет карту цветов на основе значений в 'prb.'. Я подозреваю, что это гораздо более простой способ сделать это.

def select_col(x):
    c1 = 'background-color: red'
    c2 = '' 
    #compare columns
    mask = abs(x['prb']) > 0
    #DataFrame with same index and columns names as original filled empty strings
    df1 =  pd.DataFrame(c2, index=x.index, columns=x.columns)
    #modify values of df1 column by boolean mask
    df1.loc[mask, 'col'] = c1
    return df1

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

Это еще один «почти рабочий» метод. Тем не менее, обратите внимание, как цифры окрашены, а не слова - что является целью. Я также не мог понять, как получить этот, казалось бы, более легкий подход к работе. Любая помощь очень ценится.

import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
s = df.style.background_gradient(cmap=cm)
s

enter image description here

1 Ответ

0 голосов
/ 17 октября 2019

Это что-то вроде хака, может быть, кто-то найдет более питонное решение?

def select_col(x):
   c1 = 'background-color: red'
   c3 = 'background-color: blue'
   c2 = '' 
   #compare columns
   mask = x['E'] > .5
   mask2 = x['E'] < .5
   #DataFrame with same index and columns names as original filled empty strings
   df1 =  pd.DataFrame(c2, index=x.index, columns=x.columns)
   #modify values of df1 column by boolean mask
   df1.loc[mask, 'A'] = c1
   df1.loc[mask2, 'A'] = c3
   return df1

df.style.apply(select_col, axis=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...