R语言实现两个dataframe的id与COMR全匹配生成笛卡尔积数据集
实现方案
你需要的是两个DataFrame的笛卡尔积(交叉连接),可根据你的技术栈选择对应实现方式:
Pandas 实现(中小数据量适用)
方法1:兼容所有Pandas版本的通用写法
通过临时关联键实现全匹配:
import pandas as pd # 给两个DataFrame新增相同的临时关联字段 df1['tmp_join_key'] = 0 df2['tmp_join_key'] = 0 # 关联后删除临时字段即可得到目标结果 df3 = df1.merge(df2, on='tmp_join_key').drop('tmp_join_key', axis=1)
方法2:Pandas 1.2.0+ 简化写法
直接调用官方提供的交叉连接接口:
df3 = pd.merge(df1, df2, how='cross')
注意:你的数据量级为2273780 * 29435 ≈ 670亿条,单机内存通常无法支撑全量计算,建议拆分df1为多批次分别计算后落盘,或者切换到分布式计算框架。
PySpark 实现(大数据量场景适用)
直接调用内置的笛卡尔积接口即可分布式计算:
df3 = df1.crossJoin(df2)
内容的提问来源于stack exchange,提问作者M.KKK
相关产品推荐
相关产品推荐

