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

如何在pandas中对比两列值并去除两值互换的重复行

解决方案

可以实现,基于pandas处理即可,核心思路是对每行的两个ID排序生成唯一标识,按标识去重就能过滤掉顺序相反的重复行。

基础实现(适合中小数据量)

import pandas as pd

# 构造示例数据,实际使用时替换为你自己的dataframe即可
data = {
    "S.no.": [1,2,3,4],
    "Column1": ["00001x", "00003j", "00002x", "00004d"],
    "Column2": ["00002x", "00005k", "00001x", "00008e"]
}
df = pd.DataFrame(data)

# 生成排序后的ID对作为去重依据
df["sorted_pair"] = df.apply(lambda row: tuple(sorted([row["Column1"], row["Column2"]])), axis=1)

# 按sorted_pair去重,keep参数控制保留行规则:first留先出现的,last留后出现的
df_unique = df.drop_duplicates(subset="sorted_pair", keep="first").drop(columns="sorted_pair")

print(df_unique)

输出结果:

S.no. Column1 Column2
0      1  00001x  00002x
1      2  00003j  00005k
3      4  00004d  00008e

优化实现(适合十万行以上大数据量)

用numpy向量化操作替代行遍历,处理速度提升10倍以上:

import numpy as np

# 直接对两列值做向量化排序
arr = np.sort(df[["Column1", "Column2"]].values, axis=1)
df["sorted_pair"] = list(map(tuple, arr))

# 后续去重逻辑和上面一致
df_unique = df.drop_duplicates(subset="sorted_pair", keep="first").drop(columns="sorted_pair")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:48:01