连接数据框中的所有列

Posted

技术标签:

【中文标题】连接数据框中的所有列【英文标题】:Concat all columns in a dataframe 【发布时间】:2020-10-07 16:17:21 【问题描述】:

我正在 Databricks 中编写 Python 代码,我正在使用 spark 2.4.5。

我需要一个带有两个参数的 UDF。第一个是 Dataframe,第二个是 SKid,在该 Dataframe 中,我需要对该 DataFrame 上的所有列进行哈希处理。

我已经编写了以下代码,但我需要知道如何连接动态数据框中的所有列?

def xHashDataframe(df,skColumn):
  a = df.select(
      col(skColumn)
      ,md5(
      concat(
        col("column1"), lit("~"), 
        col("column2"), lit("~"),
        ...
        col("columnN"), lit("~")
      )).alias("RowHash")
    )
  return a
  

【问题讨论】:

【参考方案1】:

没有必要使用 UDF。 concat_ws 应该可以解决问题:

df.withColumn("RowHash", F.md5(F.concat_ws("~", *df.columns))).show(truncate=False)

【讨论】:

以上是关于连接数据框中的所有列的主要内容,如果未能解决你的问题,请参考以下文章

pyspark 数据框中所有列的总计数为零

使用 pyspark 数据框中的复制名称加入后使用左表中的所有列进行分组

将 R 中的数据帧连接/合并为向量类型单元格

如何将数据框中的连接值插入到 Pyspark 中的另一个数据框中?

如何将多个列值连接到 Pandas 数据框中的单个列中

如何在 Spark 数据框中使用嵌套列进行连接