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

Pandas多列去重并忽略关系方向的数据处理需求

解决DataFrame中忽略关系方向的成对列去重问题

给定如下DataFrame:

import pandas as pd

data = {
    'person1_name': ['John_Ethan_Wayne', 'John_Ethan_Wayne', 'Michael_Wayne', 'Michael_Wayne', 'Patrick_Wayne', 'Patrick_Wayne'],
    'family1_name': ['Wayne', 'Wayne', 'Wayne', 'Wayne', 'Wayne', 'Wayne'],
    'person2_name': ['Michael_Wayne', 'Patrick_Wayne', 'Patrick_Wayne', 'John_Ethan_Wayne', 'John_Ethan_Wayne', 'Michael_Wayne'],
    'family2_name': ['Wayne', 'Wayne', 'Wayne', 'Wayne', 'Wayne', 'Wayne']
}

df = pd.DataFrame(data)

原始数据输出:

person1_name family1_name      person2_name family2_name
0  John_Ethan_Wayne        Wayne     Michael_Wayne        Wayne
1  John_Ethan_Wayne        Wayne     Patrick_Wayne        Wayne
2     Michael_Wayne        Wayne     Patrick_Wayne        Wayne
3     Michael_Wayne        Wayne  John_Ethan_Wayne        Wayne
4     Patrick_Wayne        Wayne  John_Ethan_Wayne        Wayne
5     Patrick_Wayne        Wayne     Michael_Wayne        Wayne

需求是忽略(person1_name, family1_name)与(person2_name, family2_name)的关系方向,去掉重复配对行(比如第0行和第3行属于同一配对,仅顺序相反,需保留其一),最终得到3行唯一结果。

解决方案

核心思路:将每行的两组人物信息打包成元组,对元组排序后生成唯一标识,再基于该标识去重。

具体代码实现:

# 生成排序后的配对唯一标识
df['pair_key'] = df.apply(
    lambda row: tuple(sorted([
        (row['person1_name'], row['family1_name']),
        (row['person2_name'], row['family2_name'])
    ])),
    axis=1
)

# 按唯一标识去重,保留首次出现的行,最后删除辅助列
df_unique = df.drop_duplicates(subset='pair_key').drop(columns='pair_key')

# 输出结果
print(df_unique)

执行后得到目标结果:

person1_name family1_name      person2_name family2_name
0  John_Ethan_Wayne        Wayne     Michael_Wayne        Wayne
1  John_Ethan_Wayne        Wayne     Patrick_Wayne        Wayne
2     Michael_Wayne        Wayne     Patrick_Wayne        Wayne

原理说明

  • 把每组人物的(姓名, 家族)打包成元组,确保每组信息的完整性;
  • 对两个元组排序后,无论原始顺序如何,同一配对的排序结果完全一致,生成唯一的pair_key;
  • 通过drop_duplicates基于pair_key去重,保留首次出现的行,最后移除辅助列即可得到无重复反向配对的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:02:54