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

使用Pandas与XlsxWriter高亮Excel中值为DN的单元格问题

问题解决:高亮Excel中"DN"值的单元格

原代码的问题点

  1. 替换值不匹配需求:你需要将空值、"N/A"替换为"DN",但代码里用fillna("NA")替换成了"NA",导致后续高亮逻辑匹配错误值。
  2. 样式未实际应用:生成了带高亮样式的result对象,但最终写入Excel的是原始df,样式完全没生效。
  3. 样式逻辑错误:原函数设置的是字体颜色为黄色,而非需求的单元格背景高亮。
  4. 表头重复写入:df.to_excel默认输出表头,之后又手动循环写入一次,属于重复操作。

修正后的完整代码

import pandas as pd
import numpy as np

# (此处省略CSV读取、列重命名/调整/删除等预处理代码)

# 1. 按需求替换空值与"N/A"为"DN"
df.replace('', np.nan, inplace=True)
df.replace('N/A', np.nan, inplace=True)
df = df.fillna("DN")
df.index = np.arange(1, len(df) + 1)

# 2. 定义背景高亮样式:匹配"DN"的单元格设为黄色背景
def highlight_dn(val):
    return 'background-color: yellow' if val == 'DN' else ''

# 3. 将样式应用到DataFrame
styled_df = df.style.applymap(highlight_dn)

# 4. 写入Excel并配置表头格式
writer = pd.ExcelWriter(out_name, engine='xlsxwriter')
styled_df.to_excel(writer, sheet_name='report', index=True, index_label="S_No", freeze_panes=(1,1))

workbook = writer.book
worksheet = writer.sheets['report']

# 定义表头格式
header_format = workbook.add_format({
    'bold': True,
    'fg_color': '#ffcccc',
    'border': 1
})

# 写入自定义格式的表头(索引列+数据列)
worksheet.write(0, 0, "S_No", header_format)
for col_num, value in enumerate(df.columns.values):
    worksheet.write(0, col_num + 1, value, header_format)

writer.close()

核心调整说明

  • 把替换目标值从"NA"改为"DN",对齐需求
  • 改用styled_df.to_excel写入带样式的DataFrame,确保高亮逻辑生效
  • 样式函数修改为设置background-color(单元格背景),而非字体颜色
  • 修正表头写入逻辑,覆盖默认表头的同时避免重复操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:25:32