如何使用Pandas styler实现类似Excel的条件格式,高亮两列数据差异?

错误原因分析
你原有代码使用applymap逐元素遍历的逻辑存在问题:判断条件中将Past_Week_SO的单个单元格值和完整的SO Status列做对比,返回的是布尔序列而非单个判断结果,因此无法正常生效。
正确实现方案
方案1:按行判断,兼容性更强
适配多列样式调整场景,逻辑清晰易修改:
import pandas as pd def highlight_diff(row): # 初始化所有列无自定义样式 style_series = pd.Series('', index=row.index) if row['Past_Week_SO'] != row['SO Status']: # 仅给Past_Week_SO列设置红色背景 style_series['Past_Week_SO'] = 'background-color: red' return style_series df_style = df_master.style.apply(highlight_diff, axis=1) # 导出带样式的Excel可直接调用:df_style.to_excel('对比结果.xlsx', index=False)
方案2:单列掩码判断,性能更高
仅针对Past_Week_SO列做处理,大数据量下效率更优:
# 生成两列内容差异的布尔掩码 diff_mask = df_master['Past_Week_SO'] != df_master['SO Status'] # 生成对应样式序列,不一致的行标红 diff_styles = diff_mask.map(lambda is_diff: 'background-color: red' if is_diff else '') # 将样式仅应用到Past_Week_SO列 df_style = df_master.style.apply(lambda _: diff_styles, subset=['Past_Week_SO'])
内容的提问来源于stack exchange,提问作者user16413195
相关产品推荐
相关产品推荐

