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

Python中如何拼接无关联DataFrame获取笛卡尔积结果

Pandas实现两个DataFrame笛卡尔积的方法

完全不需要写for循环,Pandas有现成的方案可以直接实现你的需求:

首先先构造你提到的示例数据:

import pandas as pd

# 表1
df1 = pd.DataFrame({'col1': [1, 2]})
# 表2
df2 = pd.DataFrame({'col1': ['A', 'B']})

方法1(推荐,适用于Pandas 1.2.0及以上版本)

直接用merge方法的cross交叉连接模式,一行代码即可生成笛卡尔积:

res = df1.merge(df2, how='cross')
# 按你的要求修改第二列列名为col
res.columns = ['col1', 'col']

输出结果如下:

col1 col
0     1   A
1     1   B
2     2   A
3     2   B

方法2(兼容所有Pandas版本)

如果你的环境Pandas版本低于1.2.0,可以通过添加临时公共键的方式实现:

# 给两个DataFrame添加相同的临时辅助列
df1['_tmp'] = 1
df2['_tmp'] = 1

# 按临时列合并后删除临时列
res = df1.merge(df2, on='_tmp').drop('_tmp', axis=1)
res.columns = ['col1', 'col']

两种实现的性能都远高于自定义for循环,尤其在数据量较大时差距会非常明显。

内容的提问来源于stack exchange,提问作者Juan Sebastian Roa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:24:03