Python实现表格中Col1列表的两两组合Explode展开
表格数据处理方案
需求说明
将输入表格中Col1列的列表元素生成所有不重复的两两组合,同时保留对应行Col2、Col3的数值,且支持Col1列表长度和元素动态变化。
输入示例
| Col 1 | Col 2 | Col 3 |
|---|---|---|
| [A,B,C,D] | Value 1 | Value 2 |
期望输出示例
| Col 1 | Col 2 | Col 3 |
|---|---|---|
| [A,B] | Value 1 | Value 2 |
| [A,C] | Value 1 | Value 2 |
| [A,D] | Value 1 | Value 2 |
| [B,C] | Value 1 | Value 2 |
| [B,D] | Value 1 | Value 2 |
| [C,D] | Value 1 | Value 2 |
通用实现代码(Python)
借助itertools.combinations工具可快速生成两两组合,代码适配任意长度的Col1列表:
import itertools # 模拟输入表格数据(可替换为实际读取的表格数据) input_data = [ {"Col1": ["A", "B", "C", "D"], "Col2": "Value 1", "Col3": "Value 2"}, # 可添加更多行,比如 {"Col1": ["X", "Y"], "Col2": "Value 3", "Col3": "Value 4"} ] output_data = [] for row in input_data: # 生成Col1列表的所有不重复两两组合 pairs = itertools.combinations(row["Col1"], 2) for pair in pairs: # 为每个组合生成新行,保留原行的Col2、Col3值 output_data.append({ "Col1": list(pair), "Col2": row["Col2"], "Col3": row["Col3"] }) # 格式化输出表格 print("| Col 1 | Col 2 | Col 3 |") print("| -------- | -------- |-------|") for item in output_data: col1_str = f"[{','.join(item['Col1'])}]" print(f"| {col1_str:<8} | {item['Col2']:<8} | {item['Col3']:<6} |")
代码说明
itertools.combinations(row["Col1"], 2):自动生成列表中所有无重复的两两组合(不考虑顺序,如[A,B]与[B,A]视为同一组合,仅保留一次)- 遍历每一行输入数据,为每个组合生成对应新行,确保Col2、Col3值与原行完全一致
- 支持多输入行,且适配任意长度的Col1列表(比如列表长度为2时生成1组组合,长度为5时生成10组组合)
内容的提问来源于stack exchange,提问作者K Ashish
相关产品推荐
相关产品推荐

