如何在Pandas DataFrame中为非首列的差异值单元格着色?
Pandas DataFrame 单元格着色:标记不在第一列的值
直接上完整实现代码,搭配步骤说明:
1. 环境与数据准备
先导入需要的库,处理示例数据(把空字符串替换为实际数据中的NaN):
import pandas as pd import numpy as np # 创建示例DataFrame d = {'column 1': ['red', 'green', 'blue', 'white', ''], 'column 2': ['red', 'blue', 'white', 'green', 'yellow'], 'column 3': ['blue', 'yellow', 'brown', '', ''], 'column 4': ['red', 'white', 'blue', 'green', '']} df = pd.DataFrame(data=d) # 将空字符串替换为NaN,匹配实际数据情况 df = df.replace('', np.nan)
2. 定义着色规则
先提取第一列的有效值集合(排除NaN),再写一个判断单元格是否需要着色的函数:
# 获取第一列的非空值集合,作为判断基准 col1_valid_values = set(df['column 1'].dropna()) def highlight_non_col1(val): # 仅当单元格非空且不在第一列有效值中时,添加浅红色背景 if pd.notna(val) and val not in col1_valid_values: return 'background-color: #ffcccc' # 不满足条件则返回空样式 return ''
3. 应用样式到指定列
用Pandas的Styler工具,将着色规则应用到第2、3、4列:
# 生成带样式的表格(Jupyter环境中直接运行会显示着色效果) styled_df = df.style.applymap(highlight_non_col1, subset=['column 2', 'column 3', 'column 4']) # 可选:保存为带样式的Excel文件(需安装openpyxl库) # styled_df.to_excel('colored_df.xlsx', engine='openpyxl', index=False)
效果说明
运行后,符合条件的单元格会被标记为浅红色:
- column 2中的
yellow - column 3中的
yellow和brown - column 4无匹配项,保持原样
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

