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

如何通过循环批量为DataFrame分数设置对应文本颜色(简化重复代码)

优化DataFrame分数单元格颜色批量设置方案

核心思路

把颜色判断逻辑封装成可复用的函数,通过pandas Styler的批量处理方法,一次性应用到所有需要设置颜色的列/单元格,彻底消除重复的if-elif-else代码。


步骤1:构造示例数据(可替换为你的实际DataFrame)

import pandas as pd

# 宽表结构:姓名为行,各指标为列,单元格对应分数
data = {
    "姓名": ["张三", "李四", "王五"],
    "Sleep": [4.2, 5.5, 5.0],
    "注意力": [2.0, 4.5, 3.0],
    "记忆力": [3.5, 1.8, 4.2]
}
df = pd.DataFrame(data)

步骤2:封装颜色判断函数

def get_cell_color(score, indicator):
    if indicator == "Sleep":
        if score < 5:
            return "background-color: red"
        elif score > 5:
            return "background-color: green"
        return "background-color: white"
    else:
        if score < 2.5:
            return "background-color: red"
        elif score > 4:
            return "background-color: green"
        return "background-color: white"

步骤3:批量应用样式到所有指标列

# 筛选出需要处理的指标列(排除姓名列)
indicator_cols = df.columns.drop("姓名")

# 使用applymap遍历指定列的每个单元格,传入分数和对应指标列名
styled_df = df.style.applymap(
    lambda x, col: get_cell_color(x, col),
    subset=indicator_cols,
    col=indicator_cols
)

# Jupyter环境中直接运行即可显示样式化后的表格
styled_df

针对长表结构的处理方案

如果你的DataFrame是长表(包含姓名、指标、分数三列),可以用以下方式批量设置:

# 长表示例数据
long_data = {
    "姓名": ["张三", "张三", "李四", "李四", "王五", "王五"],
    "指标": ["Sleep", "注意力", "Sleep", "记忆力", "Sleep", "注意力"],
    "分数": [4.2, 2.0, 5.5, 1.8, 5.0, 3.0]
}
long_df = pd.DataFrame(long_data)

# 按行遍历,针对分数列应用颜色判断
styled_long_df = long_df.style.apply(
    lambda row: ["" if col != "分数" else get_cell_color(row["分数"], row["指标"]) for col in long_df.columns],
    axis=1
)

styled_long_df

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:26:00