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

Pandas生成HTML表格高亮行时样式显示为纯文本的问题求助

解决Pandas转HTML表格时高亮指定行的问题

你的问题出在直接修改了DataFrame的单元格数据——你把匹配行的所有值替换成了样式字符串,这会让表格直接显示该文本,而非应用样式。正确的做法是利用Pandas的Styler对象来设置行样式,而不是修改数据本身。

方法一:直接设置内联背景样式

以下是修正后的代码:

import pandas as pd

data = {
    "1": {"Name": "John", "Age": 25, "City": "New York"},
    "2": {"Name": "Jane", "Age": 30, "City": "London"},
    "3": {"Name": "Mike", "Age": 35, "City": "Paris"}
}
highlighted_rows = ["1", "3"]  # 指定要高亮的行索引
df = pd.DataFrame.from_dict(data, orient="index")
df.insert(0, "Count", range(1, len(df) + 1))

# 定义高亮函数:判断行索引是否在目标列表,返回对应样式
def highlight_row(row):
    if row.name in highlighted_rows:
        return ['background-color: yellow'] * len(row)
    else:
        return [''] * len(row)

# 应用样式并生成HTML
styled_table = df.style.apply(highlight_row, axis=1)
html_table = styled_table.render()

# 保存HTML文件
with open("table.html", "w") as file:
    file.write(html_table)

关键说明:

  • df.style创建一个Styler对象,专门用于表格样式设置
  • apply(highlight_row, axis=1)表示按行应用样式函数,axis=1指定处理维度为行
  • highlight_row函数返回每行对应单元格的样式列表,匹配行的所有单元格都会被设置黄色背景

方法二:使用CSS类(更适合大型表格)

如果是大型字典生成的表格,建议用CSS类来管理样式,这样代码更简洁,也方便后续修改样式:

import pandas as pd

data = {
    "1": {"Name": "John", "Age": 25, "City": "New York"},
    "2": {"Name": "Jane", "Age": 30, "City": "London"},
    "3": {"Name": "Mike", "Age": 35, "City": "Paris"}
}
highlighted_rows = ["1", "3"]
df = pd.DataFrame.from_dict(data, orient="index")
df.insert(0, "Count", range(1, len(df) + 1))

# 定义样式函数,给目标行添加CSS类
def add_highlight_class(row):
    if row.name in highlighted_rows:
        return ['highlight'] * len(row)
    else:
        return [''] * len(row)

# 创建带类的表格,同时添加CSS样式
styled_table = df.style.apply(add_highlight_class, axis=1)
# 自定义CSS,定义highlight类的样式
css = """
<style>
.highlight {
    background-color: yellow !important;
}
table {
    border-collapse: collapse;
    width: 100%;
}
th, td {
    border: 1px solid #ddd;
    padding: 8px;
    text-align: left;
}
</style>
"""
# 拼接CSS和表格HTML
html_table = css + styled_table.render()

with open("table.html", "w") as file:
    file.write(html_table)

关键说明:

  • 给目标行的单元格添加highlight类,再通过自定义CSS定义该类的样式
  • 这种方式适合大型表格,样式修改只需要调整CSS部分,无需改动逻辑代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:34