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

如何高亮Pandas DataFrame中基于相同ID判定的重复行(排除无重复NaN行)

实现方案

1. 构造测试数据集

首先我们先把你给出的样例数据导入为pandas DataFrame:

import pandas as pd
import numpy as np

data = {
    "Date": ["2021-2-3"] * 8,
    "ID_1": [12, 12, 33, 35, 35, np.nan, 35, 88],
    "ID_2": [23, 56, 56, 45, 23, 99, np.nan, 44],
    "Name": ["Sam", "Sem", "Tom", "Jon", "Sam", "Jim", "Jon", "Sam"]
}
df = pd.DataFrame(data)

2. 计算高亮标记

我们先分别统计两个ID列里出现次数大于1的非空值,再逐行判断是否符合高亮条件:

# 提取ID_1列中重复出现的非空值集合
dup_id1 = set(df["ID_1"].value_counts()[lambda x: x > 1].index)
# 提取ID_2列中重复出现的非空值集合
dup_id2 = set(df["ID_2"].value_counts()[lambda x: x > 1].index)

# 生成高亮标记列,和你预期的输出一致
df["Highlight"] = df.apply(
    lambda row: True 
    if (pd.notna(row["ID_1"]) and row["ID_1"] in dup_id1) or (pd.notna(row["ID_2"]) and row["ID_2"] in dup_id2)
    else "",
    axis=1
)

3. 渲染绿色高亮效果

用pandas的样式接口给符合条件的行设置绿色背景:

def highlight_dup_rows(row):
    return ["background-color: lightgreen"] * len(row) if row["Highlight"] else [""] * len(row)

# 生成带高亮的表格
styled_table = df.style.apply(highlight_dup_rows, axis=1)

# 如果需要导出为本地HTML文件可以执行以下代码
# styled_table.to_html("highlighted_table.html")

如果你不需要在表格中显示Highlight列,也可以把判断逻辑直接写到高亮函数里,无需新增列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:12:02