在Pandas中基于同校条件返回不重复的索引对
解决Pandas DataFrame获取同校人员不重复索引对的问题
直接用groupby结合itertools.combinations就能搞定,逻辑简单且高效,适合处理千级数据:
实现代码
import pandas as pd from itertools import combinations # 假设你的DataFrame是df,包含Name和university列 # 示例数据(可替换为你的真实数据) data = { 'Name': ['Adam', 'Eva', 'Bran', 'Mike', 'Lily'], 'university': ['剑桥大学', '剑桥大学', '牛津大学', '牛津大学', '斯坦福大学'] } df = pd.DataFrame(data) # 生成目标索引对列表 same_university_pairs = [] # 按大学分组遍历 for _, group in df.groupby('university'): # 对组内索引生成两两组合(自动排除[1,0]这类重复对) idx_combinations = combinations(group.index, 2) # 转成列表格式加入结果 same_university_pairs.extend([list(pair) for pair in idx_combinations]) print(same_university_pairs) # 输出:[[0, 1], [2, 3]]
关键说明
groupby('university')精准把同校人员归为一组,避免跨校匹配combinations生成的是无重复的有序索引对(只保留i<j的组合),完全符合你要避免重复的需求- 迭代器式的处理逻辑,即使数据超1000条,内存占用也很低,运行效率有保障
内容的提问来源于stack exchange,提问作者totnan
相关产品推荐
相关产品推荐

