【问题标题】: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: 无效语法

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案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)
    

    【讨论】:

    • 如果我有来自两个不同数据框的两个不同列呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2019-07-06
    • 2021-10-16
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多