You need to enable JavaScript to run this app. Python pandas设置表格梯度背景色失效,如何为指定列配置不同渐变颜色
优惠活动
大模型
产品
解决方案
定价
更多

Python pandas设置表格梯度背景色失效,如何为指定列配置不同渐变颜色

问题解决方法

你的输出结果output是二级多层列索引结构,第一层级为年份、第二层级为profit/loss/status/index指标,直接在subset中传入指标名称无法匹配到对应列,因此样式不生效。
解决思路:无需硬编码年份,通过二级索引批量匹配同一指标下所有年份的列,分别为不同指标设置对应色系的渐变即可。
修改后的可运行代码如下:

import pandas as pd
import numpy as np

df = pd.read_excel('products2.xlsx', index_col=[0])

df.columns = df.columns.str.split('_', expand=True)

new_data = df.stack(0)
new_data1 = new_data.eval('status = profit - loss + other')
new_data2 = new_data1.eval('index = (profit / status) / (loss / status)')

output = new_data2.unstack(1).swaplevel(0,1, axis=1).sort_index(axis=1)

# 按二级索引匹配各指标对应的所有年份列,无需硬编码年份
profit_cols = output.columns[output.columns.get_level_values(1) == 'profit']
loss_cols = output.columns[output.columns.get_level_values(1) == 'loss']
status_cols = output.columns[output.columns.get_level_values(1) == 'status']
index_cols = output.columns[output.columns.get_level_values(1) == 'index']

# 分别为不同指标设置对应色系的渐变
style = output.style\
    .background_gradient(subset=profit_cols, cmap='Greens')\
    .background_gradient(subset=loss_cols, cmap='Reds')\
    .background_gradient(subset=status_cols, cmap='Blues')\
    .background_gradient(subset=index_cols, cmap='Purples') # 可自行更换为其他色系

style.to_excel('output_products.xlsx')

如果需要调整渐变深浅、颜色区间,可以给background_gradient添加vmin、vmax、low、high参数调整,cmap参数也可以替换为matplotlib支持的任意色系。

内容的提问来源于stack exchange,提问作者project.py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:27:04