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

如何按变量分组为Pandas DataFrame设置不同的行背景色

实现方案

步骤1:构造目标统计DataFrame(可直接运行复现你的场景)

import seaborn as sns
import pandas as pd

# 加载diamonds数据集
diamonds = sns.load_dataset("diamonds")
stat_res = []

# 统计三个低基数列的计数、占比,构造你描述的DataFrame格式
for var in ["cut", "color", "clarity"]:
    count_ser = diamonds[var].value_counts().sort_index()
    pct_ser = (count_ser / len(diamonds) * 100).round(2)
    # 仅分组首行填充Variable列值
    first_row_flag = True
    for cls, cnt, pct in zip(count_ser.index, count_ser.values, pct_ser.values):
        stat_res.append({
            "Variable": var if first_row_flag else "",
            "Class": cls,
            "Count": cnt,
            "Percentage %": pct
        })
        first_row_flag = False

df = pd.DataFrame(stat_res)

步骤2:按Variable分组设置统一背景色

核心逻辑:先给每行映射对应的分组标识,再给不同分组分配差异化背景色,全局应用样式即可。

# 生成每行对应的分组标识(把Variable列空值向前填充)
row_group = df["Variable"].replace("", pd.NA).ffill()
# 自定义分组和背景色的映射,可自行替换为你需要的颜色
group_color = {
    "cut": "#f5f5f5",
    "color": "#e3f2fd",
    "clarity": "#e8f5e9"
}

# 定义样式应用函数
def set_group_bg(row):
    current_group = row_group[row.name]
    bg = group_color[current_group]
    # 所有列都应用该背景色
    return [f"background-color: {bg}" for _ in row]

# 应用样式,Jupyter环境可直接渲染显示带背景色的表格
styled_df = df.style.apply(set_group_bg, axis=1)
styled_df

补充说明

  • 如果需要导出到Excel保留背景色,可执行styled_df.to_excel("diamonds_stat.xlsx", engine="openpyxl", index=False)
  • 颜色支持十六进制、rgb等多种格式,建议选择浅色系避免遮盖文字内容
  • 如果后续新增Variable分组,直接在group_color字典里新增键值对即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:45:06