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

使用Pandas为Excel表格添加条件背景色失败问题排查

问题分析与修正

你的代码存在几个关键问题导致背景色未生效:

  • 未保存样式对象:df_data.style.apply()会返回一个Styler对象,原DataFramedf_data并不会被修改,直接调用df_data.to_excel()只会导出原始数据,不会包含样式。
  • axis参数设置错误:你设置了axis=0(按列处理),但需求是根据列值给整行设置样式,应该使用axis=1(按行处理),此时lambda函数的参数x代表每一行数据。
  • 错误引用全局DataFrame:lambda函数里直接使用df_data.TIME_DIFFERENCE,这会遍历整个列的数据,而不是当前行的对应值,应该改用当前行的列值。
  • 保存方式错误:需要调用Styler对象的to_excel()方法,而非原DataFrame的方法。

修正后的代码

df_data = pd.read_sql(DATA_FETCH_QUERY, con=self.database_util.db_conn)

# 定义整行高亮的样式函数
def highlight_rows(row):
    diff = row['TIME_DIFFERENCE']  # 注意列名需与你的DataFrame实际列名一致
    if diff > 15:
        return ['background: red'] * len(row)
    elif 10 < diff <= 15:
        return ['background: yellow'] * len(row)
    else:
        return ['background: white'] * len(row)

# 应用样式并导出带格式的Excel
styled_df = df_data.style.apply(highlight_rows, axis=1)
styled_df.to_excel(FILE_PATH, index=False)

补充说明

  • 样式函数highlight_rows接收每一行数据,根据TIME_DIFFERENCE的值返回与行长度匹配的样式列表,确保整行都被设置对应背景色。
  • 如果你的DataFrame列名是Time_Difference(与数据示例一致),请将代码中的TIME_DIFFERENCE改为对应名称,避免键不存在的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:50:24