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

PySpark中如何将一个DataFrame的item_name列赋值到另一个DataFrame?

解决方法

1. 先修正代码的基础语法错误

你写的代码有两处语法问题:select属于多余写法,且join的参数格式不对。基础的左连接写法应该是:

new_df1 = df1.join(df2, on=df1.item_id == df2.item_id, how="left")

但如果df2里存在重复的item_id,这么写会导致df1的行被重复复制,不符合需求。

2. 处理item_id重复的核心问题

首先得保证用来匹配的df2里,每个item_id只对应一条item_name记录:

  • 如果每个item_id对应的item_name是唯一的,直接去重就行:
# 对df2按item_id去重,保留唯一匹配关系
df2_unique = df2.dropDuplicates(subset=["item_id"])
# 左连接给df1添加item_name列
new_df1 = df1.join(df2_unique, on="item_id", how="left")
  • 如果同一个item_id对应多个不同的item_name,得先确定取哪一个(比如取第一条、最后一条):
from pyspark.sql import functions as F
# 按item_id分组,取第一个出现的item_name
df2_agg = df2.groupBy("item_id").agg(F.first("item_name").alias("item_name"))
# 再进行连接
new_df1 = df1.join(df2_agg, on="item_id", how="left")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:05:54