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

如何在Pandas中通过比较DataFrame列值实现条件格式?

解决方案

要实现对比prod、pre-prod和stage列的值,给不匹配的单元格设置红色背景,你可以通过df.style.apply()结合自定义样式函数完成,以下是可行代码:

import io
import pandas as pd

csv_data = '''App_name,pre-prod,prod,stage
matching-image,nginx,nginx,nginx
mismatching-image,nginx,nginx,nginx:1.23.3-alpine'''

df = pd.read_csv(io.StringIO(csv_data), sep=",")

def highlight_mismatches(row):
    # 取prod列的值作为基准,对比其他两列
    base_value = row['prod']
    # 初始化样式列表,默认空字符串
    styles = [''] * len(row)
    # 检查目标列与基准值是否匹配
    cols_to_check = ['pre-prod', 'stage']
    for col in cols_to_check:
        if row[col] != base_value:
            col_idx = row.index.get_loc(col)
            styles[col_idx] = 'background-color: red'
    return styles

# 按行应用样式函数
styled_df = df.style.apply(highlight_mismatches, axis=1)
# 转换为带样式的HTML表格
html_table = styled_df.to_html()

# 若在Jupyter环境中,直接执行下方代码可查看带样式的表格
# styled_df

关键说明

  • 自定义函数highlight_mismatches逐行校验pre-prod、stage与prod列的值,不匹配则标记红色背景;
  • 使用df.style.apply()时必须指定axis=1,确保函数按行处理数据;
  • 之前尝试方法未生效,通常是因为未编写行级对比的逻辑,或未设置正确的axis参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:55:35