Apache spark 根据另一个pyspark dataframe列中的匹配值更新pyspark dataframe列
我需要帮助在pyspark dataframe中创建一个新列Apache spark 根据另一个pyspark dataframe列中的匹配值更新pyspark dataframe列,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我需要帮助在pyspark dataframe中创建一个新列new\u id,其值取决于另一个pyspark datafarame中字符串类型列address的匹配,如果该列address上没有匹配项,则只需填充null即可 例如: df1: df2: 新(二) df2_value old_id address new_id 'A' 'A-12' 'street 57' 6248 'A' 'A-09' 'st
new\u id
,其值取决于另一个pyspark datafarame中字符串类型列address
的匹配,如果该列address
上没有匹配项,则只需填充null即可
例如:
df1:
df2:
新(二)
df2_value old_id address new_id
'A' 'A-12' 'street 57' 6248
'A' 'A-09' 'street 98' null
'B' null 'street 23' 1673
'B' 'A-85' 'street 14' 3557
'A' null 'street 82' null
我知道如何在python中使用连接实现这一点,但我不知道pyspark中是否有类似的功能。这是一个简单的左连接。这应该起作用:
df2.join(df1, "address", left).show()
它也是pyspark中的一个简单的左连接。请展示您尝试过的内容以及遇到的具体问题。谢谢@robert kossendey。我对join做了一些不同的操作,以防止得到重复的列,如下所示:
df2.alias(“a”).join(df1.alias(“b”)、df2['address']==df1['address'])。选择(“a.*”、“b.new_id”)
没问题,如果答案对您有帮助,请向上投票
df2_value old_id address new_id
'A' 'A-12' 'street 57' 6248
'A' 'A-09' 'street 98' null
'B' null 'street 23' 1673
'B' 'A-85' 'street 14' 3557
'A' null 'street 82' null
df2.join(df1, "address", left).show()