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

Python Pandas:如何按条件设置单元格字体与背景颜色

解决Pandas单元格字体与背景色一致的问题

你的思路是对的,style.applymap()完全可以同时设置单元格背景色和字体颜色,当前脚本没生效可能是这几个原因,对应的修正方案如下:

可能的问题与修正

  • 样式生效需要正确展示/导出:仅将样式赋值给变量不会自动显示效果。在Jupyter环境中,需要单独执行样式变量;导出到Excel要指定openpyxl引擎。
  • 处理非目标值/缺失值:如果单元格的值不在0、1、3范围内,函数没有返回样式,这些单元格不会被修改,可添加默认分支处理。
  • 确保CSS样式格式正确:你的样式字符串拼接是对的,但要避免拼写错误(比如color属性不要写错)。

修正后的完整代码

import pandas as pd
import pypyodbc as odbc

def color(val):
    # 处理缺失值
    if pd.isna(val):
        return ''
    # 根据值匹配颜色
    if val == 0:
        color = 'red'
    elif val == 1:
        color = 'green'
    elif val == 3:
        color = 'blue'
    else:
        # 非目标值返回空,不修改样式
        return ''
    # 返回同时设置背景和字体颜色的CSS样式
    return f'background-color: {color}; color: {color}' 

conn = odbc.connect(MyConn)
rd = pd.read_sql("SELECT * FROM TABLE", conn) 

rdx = pd.pivot_table(rd, index=['LIST'], columns='month', values='status', aggfunc='sum')

# 应用样式
styled_rdx = rdx.style.applymap(color)

# 在Jupyter中显示样式表格
styled_rdx

# 导出到Excel(需先安装openpyxl:pip install openpyxl)
# styled_rdx.to_excel('styled_result.xlsx', engine='openpyxl')

关键说明

  • applymap()方法会遍历表格的每个单元格,将单元格值传入自定义的color()函数,函数返回的CSS样式会被应用到对应单元格。
  • 若要让样式在Excel中生效,必须使用openpyxl作为导出引擎,因为Pandas的样式功能仅支持该引擎导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:05:48