使用字符串操作合并 pyspark 中的行

Coalescing rows in pyspark with string operation

我希望从中合并 pyspark 数据帧的重复行:

对此:

我需要在合并行的每个句子后加一个句点。我尝试了 coalesce()collect_set() 但无法在收集的 window/group 中执行字符串操作。

您可以将 concat_wscollect_list 一起使用。 虽然,这不能保证句子的顺序,因为 Spark table 是无序的。如果你关心顺序,你需要一些顺序列来排序。

(df.groupBy('ID')
 .agg(*[F.col(x).alias(x) for x in ['fname', 'lname', 'Score']],
      F.concat_ws(' ', F.collect_list(F.col('Activity'))).alias('Activity'))
)

另一种方式:

df= (df2.groupby('ID','fname','lname','Score').agg(collect_list('Activity').alias('Activity'))#Create an array of Activity 
        .withColumn('Activity', concat(array_join('Activity','.'),lit('.')))#join array and then concatenate dot
     
    ).show(truncate=False)