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

Jupyter Lab中添加单元格高亮后如何维持表格原有HTML样式?

解决方法

原因分析

Pandas的Styler组件生成的表格会自带一套默认样式,且DOM结构和普通直接输出的DataFrame表格存在差异,导致你之前定义的全局CSS样式无法作用到Styler生成的表格上,因此出现样式丢失的情况。

方案一:将基础样式整合进Styler(推荐)

直接通过Styler.set_table_styles()方法把基础表格样式和高亮样式结合,两者会同时作用于目标表格:

import pandas as pd
import numpy as np

# 初始化数据
df = pd.DataFrame({"A": [*"123123123"], "B": [*"abcdefghi"]})

# 定义基础表格样式
base_table_styles = [
    {
        'selector': 'td, th',
        'props': [
            ('border', '1px solid lightgray'),
            ('font-size', '12px'),
            ('font-family', 'Verdana')
        ]
    }
]

# 高亮函数保持不变
def style_specific_cell(x):
    c1 = 'background-color: red'    
    c2 = ''
    df1 = pd.DataFrame('', index=x.index, columns=x.columns)
    m = x['B'] == 'h'
    df1['B'] = np.where(m, c1, c2)
    return df1

# 先设置基础样式,再应用高亮规则
df.style.set_table_styles(base_table_styles).apply(style_specific_cell, axis=None)

方案二:修改全局CSS选择器

如果想继续使用全局HTML样式的方式,只需调整CSS选择器,让它覆盖Styler生成的表格(Styler表格默认带有styler类):

%%HTML
<style type="text/css">
/* 同时匹配普通DataFrame表格和Styler生成的表格 */
table.dataframe td, table.dataframe th, 
table.styler td, table.styler th {
       border: 1px solid lightgray;
       font-size: 12px;
       font-family: Verdana;
    }
</style>

之后再运行高亮代码df.style.apply(style_specific_cell, axis=None),即可同时保留基础样式和高亮效果。

内容的提问来源于stack exchange,提问作者ProcolHarum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:05:17