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

如何将单个DataFrame的值映射至其他DataFrame并生成指定输出

Pandas实现DataFrame全量值映射(笛卡尔积)

问题本质

你需要将左表的每一行与右表的所有行进行组合,也就是生成两个DataFrame的笛卡尔积,这是多表组合场景中常见的需求。

方法1:通过虚拟键实现全连接

给两个DataFrame添加临时的相同键列,基于该列执行全连接后删除临时列:

import pandas as pd

df_left = pd.DataFrame({
    "Id": [1, 2, 3],
    "Value": ["A", "B", "C"]
})

df_right = pd.DataFrame({
    "IdDate": [101, 201, 301, 401, 501],
})

# 添加临时虚拟键
df_left['temp_key'] = 1
df_right['temp_key'] = 1

# 执行全连接并移除临时列
result = df_left.merge(df_right, on='temp_key').drop('temp_key', axis=1)

方法2:使用merge的how='cross'参数(推荐,Pandas 1.2.0+)

Pandas 1.2.0及以上版本提供了更简洁的方式,无需额外添加虚拟键即可直接生成笛卡尔积:

import pandas as pd

df_left = pd.DataFrame({
    "Id": [1, 2, 3],
    "Value": ["A", "B", "C"]
})

df_right = pd.DataFrame({
    "IdDate": [101, 201, 301, 401, 501],
})

result = df_left.merge(df_right, how='cross')

结果验证

两种方法生成的result结构与你指定的output完全一致,输出如下:

Id Value  IdDate
0    1     A     101
1    1     A     201
2    1     A     301
3    1     A     401
4    1     A     501
5    2     B     101
6    2     B     201
7    2     B     301
8    2     B     401
9    2     B     501
10   3     C     101
11   3     C     201
12   3     C     301
13   3     C     401
14   3     C     501

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:03:34