Я пытаюсь стилизовать очень большой массив данных с множеством различных цветовых комбинаций для заполнения ячейки и шрифта.Я экспериментировал с использованием лямбда-функций, но мне показался очень неэффективным способ стайлинга.Я ищу решение, похожее на пример, показанный внизу поста, с пометкой «Желаемый подход».
Мой конкретный случай включает в себя словарь списков.Вот пример набора данных ... я хотел бы раскрасить все имена мужчин в синий / оранжевый и все имена женщин в розовый / красный:
# raw data
df = pd.DataFrame({'Freshman':['Mike', 'Bill', 'Maria'],
'Junior':['Lauren','Tom','Jessica'],
'Senior':['Sandy','Michelle','Mike']
})
my_dict = {'Male':['Mike','Bill','Tom'],
'Female':['Maria','Lauren','Jessica','Sandy','Michelle']}
Желаемый подход:
Я пытался настроить этот подход для своего варианта использования, но не могу заставить его работать.
# raw data
df = pd.DataFrame({'Name':['name1', 'name2', 'name3', 'name1', 'name2', 'name3', 'name1', 'name2', 'name3' ],
'Rotation':['ER','PEDI','MAM','PEDI', 'ERJD','PEDI','JMAM','ERSN','ABD']})
def where(x):
bg = ['blue', 'pink']
fg = ['orange', 'red']
ls = ['ER', 'MAM']
for i, y in enumerate(ls):
if y in x:
return f"background-color: {bg[i]}; color: {fg[i]}"
return ''
df.style.applymap(where)
этот код возвращает следующее: