如何在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
相关产品推荐
相关产品推荐

