如何根据字典值为熊猫数据帧的各个单元着色

时间:2020-09-06 01:20:24

标签: python pandas dataframe

我有以下熊猫dp


      Player    Team     EPA
0   L.Jackson   BAL     0.33
1   P.Mahomes   KC      0.25
2   D.Brees     NO      0.24
3   M.Stafford  DET     0.21
4   D.Prescott  DAL     0.19
5   R.Tannehill TEN     0.18

我想通过应用以下字典值来使用颜色设置样式,其中的键与Team字段匹配。我还要使Player字段的相应值具有相同的颜色。

COLORS = {'BAL':'#241773','DAL':'#B0B7BC','DET':'#046EB4',
          'KC':'#CA2430','NO':'#A08A58','TEN':'#4095D1'}

我尝试查看this question,但以下代码没有成功

def highlight_cols(s, coldict):
    if qbs.Team in COLORS.keys():
        return ['background-color: {}'.format(COLORS[qbs.Team])] * len(s)
    return [''] * len(s)

qbs.style.apply(highlight_cols, coldict=COLORS)

我一直在阅读DataFrame.style documentation,并试图找出一种方法,可以为字典中对应于十六进制代码的每个Team上色。在文档笔记本的单元格5和6中,它显示了如何编写函数并使用df.style.applymap()来应用函数,但是我不确定如何实现此特定函数。我尝试使用.loc无济于事。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

不确定是否只希望将EPA列着色,是否要整行从最后一行删除subset参数。

def highlight_cols(s, coldict):
    return ['background-color: {}'.format(COLORS[v]) if v else '' for v in qbs.Team.isin(COLORS.keys())*qbs.Team.values]
    

qbs.style.apply(highlight_cols, coldict=COLORS, subset='EPA')