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

如何在Python中获取Pandas DataFrame列值的唯一组合

获取Pandas DataFrame中列值的唯一组合

针对你的需求,分两种场景给出解决方案:

1. 保留有序的唯一组合(顺序不同算不同组合)

如果只需要去除完全重复的行(即col1和col2的值完全一致的重复项),直接使用drop_duplicates()即可:

# 获取有序的唯一组合列表
ordered_unique_pairs = df.drop_duplicates()[['col1', 'col2']].values.tolist()
print(ordered_unique_pairs)
# 输出:[['Date1', 'Date2'], ['Date1', 'Date3'], ['Date1', 'Date4'], ['Date2', 'Date1'], ['Date2', 'Date3'], ['Date2', 'Date4'], ['Date3', 'Date1'], ['Date3', 'Date2'], ['Date3', 'Date4'], ['Date4', 'Date1'], ['Date4', 'Date2'], ['Date4', 'Date3']]

2. 获取无序的唯一组合(顺序不同算同一组合)

从需求描述来看,你大概率需要这种效果(比如('Date1','Date2')和('Date2','Date1')只保留一个)。可以通过先对每行的两个值排序,再去重实现:

方法一:用apply生成排序后的元组

# 对每行的col1和col2排序,生成统一顺序的元组
df['sorted_pair'] = df.apply(lambda row: tuple(sorted([row['col1'], row['col2']])), axis=1)
# 提取唯一的组合并转为列表
unordered_unique_pairs = df['sorted_pair'].unique().tolist()
print(unordered_unique_pairs)
# 输出:[('Date1', 'Date2'), ('Date1', 'Date3'), ('Date1', 'Date4'), ('Date2', 'Date3'), ('Date2', 'Date4'), ('Date3', 'Date4')]

方法二:集合推导式(更简洁)

无需额外创建列,利用集合自动去重的特性直接处理:

unordered_unique_pairs = list({tuple(sorted(pair)) for pair in df[['col1', 'col2']].values})
print(unordered_unique_pairs)
# 输出同上,顺序可能因集合特性略有不同,但都是唯一的无序组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:06:03