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

如何删除数据表指定列含重复值的所有关联行 仅保留唯一值行

按指定列删除所有重复关联行(仅保留列值唯一的行)

核心逻辑很简单:先统计你指定的判断列里每个值的出现次数,只保留这个值出现次数刚好为1的行,就能得到你要的结果,和示例转换效果完全匹配。

示例对照

原始数据:

IDLETTER
1A
2B
3B
4C
5D
6D
7F
8A

期望输出:

IDLETTER
4C
7F

不同场景的实现方法

1. Python(pandas 库,适合批量数据处理)

代码非常简洁,替换列名就能直接用:

import pandas as pd

# 读取/构造你的原始数据,这里直接用示例数据演示
df = pd.DataFrame({
    'ID': [1,2,3,4,5,6,7,8],
    'LETTER': ['A','B','B','C','D','D','F','A']
})

# 核心处理:筛选LETTER列值出现次数为1的行,要换判断列就把代码里的LETTER改成你的目标列名
result = df[df['LETTER'].map(df['LETTER'].value_counts()) == 1]

运行后result的输出和期望结果完全一致。

2. SQL(适合数据库表处理)

支持窗口函数的数据库(MySQL8.0+、PostgreSQL、Hive等)直接用下面的写法,把表名、列名替换成你自己的就行:

WITH stat AS (
    SELECT 
        ID,
        LETTER,
        COUNT(1) OVER(PARTITION BY LETTER) AS cnt
    FROM 你的表名
)
SELECT ID, LETTER FROM stat WHERE cnt = 1;

如果是不支持窗口函数的老版本数据库,用分组关联的写法也能实现:

SELECT t.ID, t.LETTER
FROM 你的表名 t
INNER JOIN (
    SELECT LETTER FROM 你的表名 GROUP BY LETTER HAVING COUNT(1) = 1
) tmp ON t.LETTER = tmp.LETTER;

3. Excel(适合小数据量手动处理)

操作步骤:

  • 新增一列辅助列,假设你的判断列是B列(LETTER列),在辅助列第二行(第一行是表头)输入公式 =COUNTIF(B:B,B2),下拉把公式填充到所有数据行
  • 给整张表开筛选,筛选出辅助列值不等于1的所有行,批量删除
  • 删除辅助列,剩下的内容就是你要的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:46:01