You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:42:51