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

如何查找ID与NAMESPACE相同但其他列值不同的非重复行

可行解决方法

1 SQL 数据库场景

先统计每一组ID+NAMESPACE下全字段去重后的行数,筛选行数大于1的组对应的所有记录即可:

WITH group_validate AS (
    SELECT ID, NAMESPACE
    FROM 你的表名
    GROUP BY ID, NAMESPACE
    -- 统计每组全字段去重后的行数,大于1说明组内存在其他字段不同的记录
    HAVING COUNT(DISTINCT CONCAT_WS('|', ID, NAMESPACE, 其他字段1, 其他字段2, 其他字段n)) > 1
    -- 若使用PostgreSQL等支持整行去重统计的数据库,可简化为 HAVING COUNT(DISTINCT 你的表名.*) > 1
)
SELECT t.*
FROM 你的表名 t
INNER JOIN group_validate g ON t.ID = g.ID AND t.NAMESPACE = g.NAMESPACE;

2 Python Pandas 本地数据集场景

import pandas as pd

# 读取数据集,可根据你的文件格式替换为read_excel等方法
df = pd.read_csv("你的数据文件路径")

# 按ID、NAMESPACE分组,筛选全字段去重后行数大于1的分组的所有记录
target_df = df.groupby(["ID", "NAMESPACE"], as_index=False).filter(
    lambda group: group.drop_duplicates().shape[0] > 1
)

# 输出结果
print(target_df)
# 可导出到文件 target_df.to_csv("筛选结果.csv", index=False)

3 Excel 小数据集手动处理场景

  • 新增辅助列,拼接所有字段避免误判,公式为=A2&"|"&B2&"|"&C2&"|"&...,按你的列顺序替换列号即可
  • 新增分组校验列,统计每个ID+NAMESPACE组内辅助列的去重数量,公式为=SUMPRODUCT((A$2:A$数据末尾行号=A2)*(B$2:B$数据末尾行号=B2)*(1/COUNTIF(D$2:D$数据末尾行号,D$2:D$数据末尾行号))),其中D列为第一步新建的辅助列,A为ID列、B为NAMESPACE列
  • 筛选分组校验列数值大于1的所有行,即为符合要求的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:04