【问题标题】:How to concat a StringType column with every element of an ArrayType column in pyspark如何在pyspark中将StringType列与ArrayType列的每个元素连接起来
【发布时间】:2019-12-16 00:30:05
【问题描述】:

我在 pyspark 数据框中有一个 StringType() 列和一个 ArrayType(StringType()) 列。我想将 StringType() 列与 ArrayType(StringType()) 列的每个元素连接起来。
示例:

+-----+---------------------+------------------------------+
|col1 |col2                 |col3                          |
+-----+---------------------+------------------------------+
|'AQQ'|['ABC', 'DEF']       |['AQQABC', 'AQQDEF']          |
|'APP'|['ABC', 'DEF', 'GHI']|['APPABC', 'APPDEF', 'APPGHI']|
+-----+---------------------+------------------------------+

谢谢:)

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    对于 spark 2.4+,使用 transform:

    from pyspark.sql.functions import expr 
    
    df = spark.createDataFrame([('AQQ', ['ABC', 'DEF']),('APP', ['ABC', 'DEF', 'GHI'])], ['col1', 'col2'])
    
    df.withColumn('col3', expr("transform(col2, x -> concat(col1, x))")).show(truncate=False)                            
    +----+---------------+------------------------+
    |col1|col2           |col3                    |
    +----+---------------+------------------------+
    |AQQ |[ABC, DEF]     |[AQQABC, AQQDEF]        |
    |APP |[ABC, DEF, GHI]|[APPABC, APPDEF, APPGHI]|
    +----+---------------+------------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 2015-08-18
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多