如何从单列表格生成两两组合的名称值对?
生成单列表格的不重复两两配对表格
输入表格
| name |
|---|
| ALICE |
| BOB |
| CHUCK |
期望输出表格
| nameA | nameB |
|---|---|
| ALICE | BOB |
| ALICE | CHUCK |
| BOB | CHUCK |
下面提供几种常用工具的实现方案:
SQL 实现
通过自连接并添加过滤条件,避免生成重复配对:
SELECT t1.name AS nameA, t2.name AS nameB FROM your_table t1 JOIN your_table t2 ON t1.name < t2.name ORDER BY t1.name, t2.name;
ON t1.name < t2.name 确保每个配对仅出现一次(不会同时生成ALICE&BOB和BOB&ALICE)。
Python 实现
利用itertools.combinations直接生成所有不重复的两两组合:
import itertools import pandas as pd # 从表格读取或直接定义名称列表 names = ["ALICE", "BOB", "CHUCK"] # 生成两两不重复组合 pairs = itertools.combinations(names, 2) # 转为DataFrame输出 df = pd.DataFrame(pairs, columns=["nameA", "nameB"]) print(df)
执行后即可得到符合要求的两列表格。
Excel 实现
公式法
- 将名称放在A列(A2:A4为目标名称)
- 在C2输入公式:
=INDEX($A$2:$A$4,INT((ROW()-2)/COUNTA($A$2:$A$4))+1) - 在D2输入公式:
=INDEX($A$2:$A$4,MOD(ROW()-2,COUNTA($A$2:$A$4))+1) - 下拉填充至所有可能行,筛选掉
C列值 >= D列值的行,最终保留的行即为目标配对。
Power Query 法(更高效)
- 将数据导入Power Query
- 选择「添加列」→「自定义列」,输入
[name] < [name.1](自连接后生成的重复列) - 筛选自定义列为
True的行 - 重命名列并移除冗余列,加载回Excel即可得到目标表格。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

