【问题标题】:Add new column with zipped list as a constant value in pyspark在 pyspark 中添加带有压缩列表的新列作为常量值
【发布时间】:2023-03-21 07:07:01
【问题描述】:

我有 payspark 数据框,我想添加具有恒定值 x 的新列,它是压缩列表:

x = [('1', 'hello'),('2', 'Hi'),('3', 'Hello')]

但是当我运行这段代码时:

df = df.withColumn('case', x)

我收到此错误:

AssertionError: col should be Column

我怎样才能给这个列表提供结构来处理这个错误,我知道对于 int 或字符串值我们可以使用 Lit 函数,但是对于这种格式我不知道该怎么做。

【问题讨论】:

    标签: pyspark pyspark-sql pyspark-dataframes


    【解决方案1】:

    您可以将 string literals 放入 structsarray

    x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
    
    df.withColumn("col1", F.array(*[F.struct(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
    
    +---------------------------------+
    |col1                             |
    +---------------------------------+
    |[[1, hello], [2, Hi], [3, Hello]]|
    |[[1, hello], [2, Hi], [3, Hello]]|
    +---------------------------------+
    

    Or,您创建 arrayarrays

    x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
    
    df.withColumn("col1", F.array(*[F.array(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
    
    +---------------------------------+
    |col1                             |
    +---------------------------------+
    |[[1, hello], [2, Hi], [3, Hello]]|
    |[[1, hello], [2, Hi], [3, Hello]]|
    +---------------------------------+
    

    Or,您可以以类似的方式使用 create_map

    x = [('1', 'hello'),('2','Hi'),('3', 'Hello')]
    
    df.withColumn("col1",F.array(*[F.create_map(F.lit(i[0]),F.lit(i[1])) for i in x])).show(truncate=False)
    
    +---------------------------------------+
    |col1                                   |
    +---------------------------------------+
    |[[1 -> hello], [2 -> Hi], [3 -> Hello]]|
    |[[1 -> hello], [2 -> Hi], [3 -> Hello]]|
    +---------------------------------------+
    

    【讨论】:

    • 效果很好,但是对于 pandas 数据框,我使用此列来应用功能,但在 pyspark 中它有问题,也许我应该更改我的 udf 中的输入类型,谢谢您的帮助
    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 2022-06-15
    • 2017-11-07
    • 2015-11-04
    • 2018-06-18
    • 1970-01-01
    • 2022-07-22
    • 2017-06-26
    相关资源
    最近更新 更多