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

如何用单段代码实现两个集合的全交叉连接并转换为DataFrame?

实现两个集合的全交叉连接并转为DataFrame

可以用itertools.chain把两个方向的笛卡尔积结果合并,再一次性转为DataFrame,单段代码就能完成需求:

import itertools
import pandas as pd

a = {1,2,3}
b = {4,5,6}

# 合并双向交叉连接结果并转为DataFrame
df = pd.DataFrame(itertools.chain(itertools.product(a, b), itertools.product(b, a)), 
                  columns=["元素A", "元素B"])

print(df)

补充说明:

  • itertools.product(a, b)生成a元素在前、b元素在后的所有组合,itertools.product(b, a)则生成反向的组合
  • itertools.chain()直接串联两个迭代器的内容,比先转成列表再合并更节省内存
  • 通过columns参数指定列名,能让DataFrame的结构更清晰

如果需要区分两种组合的方向,可以新增一列标记:

import itertools
import pandas as pd

a = {1,2,3}
b = {4,5,6}

# 生成带方向标记的组合数据并转为DataFrame
df = pd.DataFrame(
    [(x, y, "a→b") for x, y in itertools.product(a, b)] + [(x, y, "b→a") for x, y in itertools.product(b, a)],
    columns=["元素1", "元素2", "组合方向"]
)

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:50:36