如何在火花数据框中将列连接到一个

Posted

技术标签:

【中文标题】如何在火花数据框中将列连接到一个【英文标题】:how to concat to columns to one in spark data frame 【发布时间】:2021-01-08 10:22:58 【问题描述】:

如何在 python 中将 spark 中数据框的 2 列合并为 1 列? 我在网上找到了这个,但我得到了错误:

df4.select(concat(col("originaltitle"),lit(','),
    col("title"),lit(','),col("lname")).as("FullName")).show(false)

错误:

文件“”,第 2 行 col("title"),lit(','),col("lname")).as("FullName"))

                                    ^

SyntaxError: 无效语法

【问题讨论】:

【参考方案1】:

除了修复语法错误(使用alias而不是as),您还可以使用concat_ws,它代表用分隔符连接。这样可以避免您多次指定逗号。

df4.select(
    concat_ws(
        ',',
        col("originaltitle"),
        col("title"),
        col("lname")
    ).alias("FullName")
).show(truncate=False)

【讨论】:

如果我有来自两个不同数据框的两个不同列呢? @elham 那么你需要先将两个数据帧合并成一个数据帧。 但它们的大小不同 @elham 您可以加入数据框,无论其大小。你只需要一把钥匙就可以加入。 但是其中一个重复很多,而且我数据的频率很重要【参考方案2】:

错误很明显,由于as 关键字,您的语法无效。 在 Pyspark 中,您应该使用 alias 而不是 as

df4.select(
  concat(col("originaltitle"),lit(','), col("title"),lit(','), col("lname")
        ).alias("FullName")
).show(truncate=False)

【讨论】:

如果我有来自两个不同数据框的两个不同列呢?

以上是关于如何在火花数据框中将列连接到一个的主要内容,如果未能解决你的问题,请参考以下文章

如何在火花中将rdd对象转换为数据框

如何将带有列表值的熊猫列连接到一个列表中?

在单个查询中将一个表的多个列连接到另一个表的单个列

如何在火花中将列转换为数组[长]

Pyspark/SQL 将具有列表值的列连接到另一个数据框列

将两个数据库列连接到一个结果集列