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

如何使用Pandas 16.2比较两个DataFrame并实现独有单元格条件格式高亮

嗨,我来帮你搞定在Pandas 0.16.2里给两个DataFrame独有单元格加条件格式的需求!

首先,你已经通过isin()完成了各列的存在性对比,接下来只需要把这些对比结果转化为可视化的高亮格式就行。Pandas 0.16.2已经支持Styler类来做条件格式,我们可以基于你现有的比较逻辑来实现:

步骤1:生成独有单元格的标记矩阵

先把每列的isin()结果取反(因为isin()返回True代表该值在另一个DataFrame中存在,取反后就是独有的值),整合成一个和原DataFrame形状完全一致的布尔矩阵:

import pandas as pd

# 假设你的df和df1已经定义好
unique_mask = pd.DataFrame({
    'A': ~df['A'].isin(df1['A']),
    'B': ~df['B'].isin(df1['B']),
    'C': ~df['C'].isin(df1['C'])
})

步骤2:定义高亮样式函数

写一个简单的函数,根据标记矩阵的布尔值返回对应的CSS样式——这里我们用浅黄背景来高亮独有单元格:

def get_highlight_style(row):
    # 遍历当前行的每一列,匹配标记矩阵的结果
    return [
        'background-color: #ffff99' if unique_mask.loc[row.name, col] else ''
        for col in row.index
    ]

步骤3:应用样式并输出

用Styler的apply()方法把样式函数应用到每一行,然后就可以查看或保存结果了:

# 创建样式化对象
styled_df = df.style.apply(get_highlight_style, axis=1)

# 如果在Jupyter Notebook里,直接运行下面的代码就能看到高亮效果
display(styled_df)

# 或者保存为HTML文件,方便在浏览器查看
styled_df.to_file('unique_cells_highlighted.html')

注意事项

  • 确保df和df1的行是对齐的(比如索引一致),否则标记矩阵的位置会出错。如果索引不对齐,可以先对两个DataFrame做reset_index(drop=True)来统一索引。
  • Pandas 0.16.2的Styler功能虽然不如新版本丰富,但上面的逻辑完全兼容,放心用就行。

内容的提问来源于stack exchange,提问作者yacub elmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:21:51