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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:20:26