如何在pyspark中连接文本列之前对值进行排序

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

我需要帮助来转换下面的Pyspark代码或Pyspark sql代码。

df["full_name"] = df.apply(lambda x: "_".join(sorted((x["first"], x["last"]))), axis=1)

它基本上增加了一个新的列名full_name,必须以排序的方式将列的值首先和最后连接起来。

我已经完成了下面的代码,但不知道如何应用于对列文本值进行排序。

df= df.withColumn('full_name', f.concat(f.col('first'),f.lit('_'), f.col('last')))
pandas pyspark pyspark-sql pyspark-dataframes
1个回答
0
投票

来自Spark-2.4 +] ::

在这种情况下,我们可以使用array_join, array_sort

个函数。

示例:

df.show()
#+-----+----+
#|first|last|
#+-----+----+
#|    a|   b|
#|    e|   c|
#|    d|   a|
#+-----+----+

from pyspark.sql.functions import *
#first we create array of first,last columns then apply sort and join on array
df.withColumn("full_name",array_join(array_sort(array(col("first"),col("last"))),"_")).show()
#+-----+----+---------+
#|first|last|full_name|
#+-----+----+---------+
#|    a|   b|      a_b|
#|    e|   c|      c_e|
#|    d|   a|      a_d|
#+-----+----+---------+
© www.soinside.com 2019 - 2024. All rights reserved.