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

如何在Pandas中按条件设置单元格及Avg整行背景色并导出Excel?

解决DataFrame单元格着色错误及Avg整行着色导出Excel

一、修复单元格着色的UnboundLocalError

原代码存在两个核心问题:

  • 逻辑运算符误用:Python中逻辑与需用and,而非位运算符&
  • 边界值未覆盖:当值等于50或80时,没有对应的分支逻辑,导致color变量未定义,触发错误

修改后的单元格着色函数:

def color_cell(val):
    if val > 80:
        bg_color = 'red'
    elif 50 < val < 80:
        bg_color = 'yellow'
    elif val <= 50:
        bg_color = 'green'
    return f'background-color: {bg_color}'

二、实现Avg整行背景色设置

编写行级着色函数,判断目标行后根据Percent_Utilized值设置整行样式:

def color_avg_row(row):
    if row['Server'] == 'Avg':
        val = row['Percent_Utilized']
        if val > 80:
            bg_color = 'red'
        elif 50 < val < 80:
            bg_color = 'yellow'
        else:
            bg_color = 'green'
        return [f'background-color: {bg_color}'] * len(row)
    return [''] * len(row)

三、组合样式并导出Excel

将两个样式逻辑结合,导出到Excel文件:

# 依次应用单元格着色和行着色
styled_df = df.style.applymap(color_cell, subset=["Percent_Utilized"])\
                     .apply(color_avg_row, axis=1)

# 导出Excel,不含索引列
styled_df.to_excel('server_utilization_report.xlsx', index=False)

注意事项

  • 若Avg行的判断条件不是Server == 'Avg',可根据实际数据调整(比如用pd.isna(row['Env.'])判断空值列)
  • 原DataFrame中Avg行的空值单元格也会被设置对应背景色,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:22:32