【问题标题】:Create a new column that details if rows in one PySpark dataframe matches a a row in another column of a dataframe创建一个新列,详细说明一个 PySpark 数据框中的行是否与数据框另一列中的行匹配
【发布时间】:2022-01-15 15:06:08
【问题描述】:

我想创建一个函数,从 PySpark 中的左连接创建一个新列,详细说明一列中的值是否逐行匹配另一个数据帧的列。

例如,我们有一个 PySpark 数据帧 (d1) 具有列 ID 和名称,另一个 PySpark 数据帧 (d2) 具有相同的列 - ID 和名称。

我正在尝试创建一个函数来连接这两个表并创建一个新列,如果两个数据帧中存在相同的 ID,则显示“True”或“False”。

到目前为止,我有这个

def doValuesMatch(df1, df2):
    left_join = df1.join(df2, on='ID', how='left')
    df1.withColumn('MATCHES?', .....(not sure what to do here))

我是 PySpark 的新手,有人可以帮我吗?提前致谢。

【问题讨论】:

    标签: python dataframe apache-spark pyspark


    【解决方案1】:

    可能是这样的。

    data1 = [
        (1, 'come'),
        (2, 'on'),
        (3, 'baby'),
        (4, 'hurry')
    ]
    data2 = [
        (2, 'on'),
        (3, 'baby'),
        (5, 'no')
    ]
    df1 = spark.createDataFrame(data1, ['id', 'name'])
    df2 = spark.createDataFrame(data2, ['id', 'name'])
    df2 = df2.withColumnRenamed('name', 'name2')
    df = df1.join(df2, on='id', how='left').withColumn('MATCHES', F.expr('if(name2 is null,"Flase","True")'))
    df.show(truncate=False)
    

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2020-12-10
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2020-04-11
      • 2017-07-05
      相关资源
      最近更新 更多