如何通过pandas.style.apply为单元格同时应用多项CSS样式?
解决方案
当然可以实现这个需求!你只需要调整自定义的样式函数,在给color列的单元格设置样式时,同时指定background-color和color两个CSS属性,让文字颜色与背景色完全一致,就能隐藏掉十六进制文本,只保留颜色块效果。
修改后的完整代码
import pandas as pd def legend_styling(val): if val.name == 'color': # 同时设置背景色和文字颜色,用分号分隔多个CSS规则 return [f'background-color: {x}; color: {x}' for x in val] elif val.name == 'shift': return ['font-weight: bold' for x in val] df = pd.DataFrame({ 'form': {1: 'C4H6O5', 2: 'C4H6O5', 3: 'C4H4O4', 4: 'C4H5N3O'}, 'name': {1: 'Malate', 2: '3-Dehydro-L-threonate', 3: 'Fumarate', 4: 'Cytosine'}, 'color': {1: '#009933', 2: '#009933', 3: '#e67300', 4: '#e63900'}, 'shift': {1: 'm+0', 2: 'm+0', 3: 'm+0', 4: 'm+0'} }) # 应用样式并展示 df.style.apply(legend_styling, axis=0, subset=['color','shift'])
关键修改说明
在处理color列的分支里,我们把原来单一的background-color样式,改成了同时包含background-color和color的复合样式:
background-color: {x}:设置单元格背景为对应十六进制颜色color: {x}:设置单元格文字颜色为相同的十六进制颜色
这样一来,color列里的十六进制文本会和背景色完全融合,视觉上只显示出颜色块,完美达到你想要的自定义图例效果,同时shift列的字体加粗样式也会正常保留。
内容的提问来源于stack exchange,提问作者Patrickens
相关产品推荐
相关产品推荐

