首页 > 解决方案 > 如何根据使用 pyspark 匹配的单元名更新 DF1 中 DF2 的所有值

问题描述

我有两个数据框,我想根据匹配的单元名更新 DF1 中 DF2 的所有值。我将如何在 pyspark 中找到。请帮忙。 在此处输入图像描述

标签: pythonpysparkapache-spark-sql

解决方案


我在两个数据框中看到的唯一区别在于siteAddress列中。为了能够使用该解决方案,您需要重命名siteAddress其中一个数据框中的列。我在第二个数据框中重命名它

df2= df2.withColumnRenamed('siteAddress', 'siteAddress_y')

之后,您需要加入两个数据框并将所有值放入同一数据框中。

df = df1.join(df2, on="Name", how="left")

一旦你这样做了,你会注意到数据集中有一堆null值。我们使用合并功能删除它

import pyspark.sql.functions as F
df\
    .withColumn("UpdatedsiteAddress", F.coalesce(df.siteAddress, df.siteAddress_y))\
    .drop("siteAddress", "siteAddress_y")

最后一行是删除多余的列


推荐阅读