【问题标题】:Extract values from a complex column in PySpark从 PySpark 中的复杂列中提取值
【发布时间】:2021-02-09 15:27:58
【问题描述】:

我有一个 PySpark 数据框,它有一个复杂的列,参考下面的值:

ID  value
1   [{"label":"animal","value":"cat"},{"label":null,"value":"George"}]

我想在 PySpark 数据框中添加一个新列,该列基本上将其转换为字符串列表。如果 Label 为 null,则字符串应包含“value”,如果 label 不为 null,则字符串应为“label:value”。因此,对于上面的示例数据框,输出应如下所示:

ID   new_column
 1   ["animal:cat", "George"]

【问题讨论】:

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


    【解决方案1】:

    您可以使用transform将每个数组元素转换为字符串,使用concat_ws构造:

    df2 = df.selectExpr(
        'id',
        "transform(value, x -> concat_ws(':', x['label'], x['value'])) as new_column"
    )
    
    df2.show()
    +---+--------------------+
    | id|          new_column|
    +---+--------------------+
    |  1|[animal:cat, George]|
    +---+--------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2021-09-16
      • 2015-03-07
      相关资源
      最近更新 更多