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

不关注列值顺序时如何去除两列互换形成的重复数据行

无序两列组合去重实现方案

核心思路:无需编写跨行校验的复杂for循环,对每一行的B1、B2值生成无序组合唯一标识,再结合Alpha列做去重即可。

场景1:SQL实现

如果数据存储在关系型数据库中,直接用查询语句即可完成:

WITH temp AS (
    SELECT 
        Alpha,
        B1,
        B2,
        -- 生成排序后的组合键,分隔符选不会出现在B列值中的字符即可
        CASE WHEN B1 < B2 THEN CONCAT(B1, '|', B2) ELSE CONCAT(B2, '|', B1) END AS pair_key
    FROM 你的表名
)
-- PostgreSQL可直接用DISTINCT ON,MySQL可替换为GROUP BY取每组首行逻辑
SELECT DISTINCT ON (Alpha, pair_key) Alpha, B1, B2
FROM temp
-- 要匹配示例输出结果可加排序规则调整保留行
ORDER BY Alpha, pair_key, B1 DESC;

场景2:Python Pandas实现

如果是处理数据框,代码更简洁:

import pandas as pd

# 假设数据已读入df变量
# 生成无序组合键
df['pair_key'] = df.apply(lambda x: tuple(sorted([x['B1'], x['B2']])), axis=1)
# 按Alpha+组合键去重,keep参数可调整保留首行/末行
df_dedup = df.drop_duplicates(subset=['Alpha', 'pair_key'], keep='last').drop('pair_key', axis=1)

调整keep='last'即可完全匹配你给出的示例输出结果。

场景3:Excel实现

用辅助列即可快速处理:

  • 新增辅助列D,单元格D2公式写=IF(B2<C2,B2&"|"&C2,C2&"|"&B2),下拉填充所有行
  • 选中所有列,点击「数据」选项卡的「删除重复值」,勾选Alpha列和辅助列D确认即可
  • 最后删除辅助列D得到最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:04