Pyspark dataframe查询,用于在联接后填充列值

hjqgdpho  于 2023-04-29  发布在  Spark
关注(0)|答案(1)|浏览(127)

输入数据框1

输入数据框2

来自输入数据框1和2的连接数据框

预期成果

我有两个输入pyspark Dataframe ,如图所示。我必须连接这两个数据框架,并在列名“field 1”和“field 2”中-我需要从提到的相应列名的Dataframe 1填充值(如预期的输出数据框架所示)。)

ttcibm8c

ttcibm8c1#

加入df1df2后,可以使用whenotherwise。为了使事情更具有一般性,我们可以编写一个函数,为给定的列创建when + otherwise语句。

def create_condition(col_name): 
    return F.when(
        F.col(col_name) == 'data1', F.col('data1')
    ).when(
        F.col(col_name) == 'data2', F.col('data2')
    ).otherwise(
        None
    )

df1.join(
    df2, on='common_column', how='inner'
).withColumn(
    "field1",
    create_condition("field1")
).withColumn(
    "field2",
    create_condition("field2")
)

+-------------+-----+-----+------+------+
|common_column|data1|data2|field1|field2|
+-------------+-----+-----+------+------+
|            A|    1|    2|     1|     2|
|            B|    3|    4|     4|     3|
|            C|    5|    6|     5|  null|
+-------------+-----+-----+------+------+

相关问题