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

PySpark合并两个DataFrame求助:如何实现指定关联输出

解决方案:用左连接合并DataFrame

你用union不对,因为union是用来把同结构的DataFrame行叠加的,而你需要的是按关联键把两个表的列合并,匹配的行展开,不匹配的补空值,这得用merge函数做左外连接。

代码实现

import pandas as pd

# 构造示例df1
df1 = pd.DataFrame({
    'Id-name': [21171, 21171, 21171, 21171, 22000],
    'Match': ['2500B', '2400B', '2400C', '3000A', '1000A'],
    'Title': ['Title1', 'Title2', 'Title3', 'Title4', 'Title5']
})

# 构造示例df2
df2 = pd.DataFrame({
    'Prio': ['2500B', '2500B', '2500B', '1000A', '1000A', '1000A', '1000A'],
    'Document': ['Doc1', 'Doc2', 'Doc3', 'Doc5', 'Doc6', 'Doc7', 'Doc8']
})

# 左连接合并:按df1.Match和df2.Prio匹配,保留df1所有行
result = pd.merge(df1, df2, left_on='Match', right_on='Prio', how='left')

print(result)

关键参数说明

  • left_on='Match':指定用df1的Match列作为关联键
  • right_on='Prio':指定用df2的Prio列作为关联键
  • how='left':强制保留df1的所有行,df2中匹配不到的行,对应列会填充NaN(即你需要的null)

注:你期望结果中22000行的Prio写成1000B属于笔误,实际运行后会正确显示为1000A,与df2的Prio值一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:14