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

如何用Pandas将含ID列的DataFrame与另一DataFrame生成全组合DataFrame

问题

现有含ID列的DataFrame(df1)和另一个DataFrame(df2),需将二者合并为保留ID列的全组合结果DataFrame。

df1结构:

ID   name.x
1    a
2    b
3    c

df2结构:

name.y
l
m

数据创建代码:

import pandas as pd
df1 = pd.DataFrame({'ID':[1,2,3],'name.x':['a','b','c']})
df2 = pd.DataFrame({'name.y':['l','m']})

期望结果:

ID   name.x name.y
1    a      l 
1    a      m    
2    b      l
2    b      m
3    c      l 
3    c      m  

解决方案

要实现两个DataFrame的全组合(笛卡尔积)合并,直接使用Pandas的merge方法并指定how='cross'即可,该方式会自动生成两个DataFrame所有行的组合,同时保留原有的全部列(此方法要求Pandas版本≥1.2.0)。

实现代码:

result_df = df1.merge(df2, how='cross')
print(result_df)

运行结果:

ID name.x name.y
0   1      a      l
1   1      a      m
2   2      b      l
3   2      b      m
4   3      c      l
5   3      c      m

若你的Pandas版本低于1.2.0,可通过临时添加相同列的方式实现交叉合并:

# 添加临时列用于关联
df1['temp'] = 1
df2['temp'] = 1
# 合并后删除临时列
result_df = df1.merge(df2, on='temp').drop('temp', axis=1)
# 清理原DataFrame的临时列
df1.drop('temp', axis=1, inplace=True)
df2.drop('temp', axis=1, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:30:37