我的数据块笔记本中有两个数据框。例如数据如下所示:
df1 :
id name
1 200/300A/200B
2 805/805B/500
df2 :
ids
805
200B
现在我想用 df2 id 替换 df1 名称为 0,例如,dataframe1 中显示为 805 和 200B 的数据需要替换为零。
输出应该是
df
id name
1 200/300A/0
2 0/805B/500
检查下面的代码。
df1
.join(df2.selectExpr("collect_set(ids) AS ids"))
.withColumn(
"name",
expr("concat_ws('/', transform(split(name, '/'), s -> if(array_contains(ids,s), 0, s)))")
)
.select("id", "name")
.show(false)
+---+----------+
|id |name |
+---+----------+
|1 |200/300A/0|
|2 |0/805B/500|
+---+----------+