3

我可以将背景颜色的 lambda 函数和字体颜色的 lambda 函数组合成一个 lamdba 函数吗?这将用于具有大量不同样式的非常大的数据框,因此将代码减少一半会很好。

欢迎任何其他关于更好方法的建议

# 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']})

#style
df = df.style.apply(lambda x: ["background-color: green" if 'ER' in v else "" for v in x], axis = 1)\
             .apply(lambda x: ["color: orange" if 'ER' in v else "" for v in x], axis = 1)\
             .apply(lambda x: ["background-color: red" if 'MAM' in v else "" for v in x], axis = 1)\
             .apply(lambda x: ["color: yellow" if 'MAM' in v else "" for v in x], axis = 1)

结果df如下所示:

风格的 df

4

1 回答 1

2

我会做这样的事情(用于 f 字符串的 Python 3.6+):

def where(x):
  bg = ['green', 'red']
  fg = ['orange', 'yellow']
  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)
于 2018-09-06T19:34:19.090 回答