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

如何根据单元格值设置Pandas DataFrame整行背景色

问题与解决方案

问题

想依据列表中的UUID值设置DataFrame整行背景色,当前使用applymap方法仅能高亮匹配条件的单个单元格,需要修改代码实现整行着色。

原代码

import numpy as np
import pandas as pd


item_added = ["UUID1", "UUID22"]
item_removed = ["UUID2", "UUID89"]
item_changed = ["UUID3", "UUID100"]


def highlight_cells_condition(val):
    if val in item_added:
        color = "green"
    elif val in item_removed:
        color = "red"
    elif val in item_changed:
        color = "yellow"
    else:
        color = ""

    return ["background-color: {}".format(color)]


arr = np.array(
    [
        ("UUID3", "TYPE1", 0, "AA", "time1", "Items"),
        ("UUID2", "TYPE2", 0, "BB", "time2", "Items"),
        ("UUID1", "TYPE1", 1, "CC", "time3", "Vaalves"),
    ]
)
header = ["UUID", "B", "C", "D", "E", "F"]
df = pd.DataFrame(num, columns=header)

df.style.applymap(highlight_cells_condition)  
html = style.to_html()
with open("output.html","w+") as fh:
    fh.write(html)

修改后的代码(实现整行高亮)

import numpy as np
import pandas as pd


item_added = ["UUID1", "UUID22"]
item_removed = ["UUID2", "UUID89"]
item_changed = ["UUID3", "UUID100"]


def highlight_row_condition(row):
    # 取当前行的UUID值判断对应颜色
    uuid_val = row['UUID']
    if uuid_val in item_added:
        color = "green"
    elif uuid_val in item_removed:
        color = "red"
    elif uuid_val in item_changed:
        color = "yellow"
    else:
        color = ""
    # 生成整行的样式列表,确保每个单元格都应用相同背景色
    return [f"background-color: {color}"] * len(row)


arr = np.array(
    [
        ("UUID3", "TYPE1", 0, "AA", "time1", "Items"),
        ("UUID2", "TYPE2", 0, "BB", "time2", "Items"),
        ("UUID1", "TYPE1", 1, "CC", "time3", "Vaalves"),
    ]
)
header = ["UUID", "B", "C", "D", "E", "F"]
df = pd.DataFrame(arr, columns=header)

# 使用apply方法按行处理,axis=1指定逐行应用函数
style = df.style.apply(highlight_row_condition, axis=1)
html = style.to_html()
with open("output.html","w+") as fh:
    fh.write(html)

关键修改点

  1. 替换处理方法:把逐单元格处理的applymap换成按行处理的apply,配合axis=1参数实现逐行判断。
  2. 重写高亮函数:新函数接收整行数据,通过row['UUID']获取当前行的UUID值,判断后生成与行长度一致的样式列表,保证整行单元格都应用相同背景色。
  3. 修正原代码错误:创建DataFrame时变量名从num改为arr,同时将样式对象赋值给style变量,避免后续调用报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:38:12