如何使用 pysaprk 替换基于其他数据帧的数据帧中的值

问题描述 投票:0回答:1

我的数据块笔记本中有两个数据框。例如数据如下所示:

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
pyspark databricks
1个回答
0
投票

检查下面的代码。

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|
+---+----------+
© www.soinside.com 2019 - 2024. All rights reserved.