【问题标题】:Replace/Convert null value to empty array in pyspark将空值替换/转换为pyspark中的空数组
【发布时间】:2021-10-22 17:55:56
【问题描述】:

我有 Pyspark 数据框:

id |  column_1       | column_2    | column_3
--------------------------------------------
1  |    ["12"]       |   null     |    ["67"]
--------------------------------------------
2  |    null         |   ["78"]    |   ["90"]
--------------------------------------------
3  |    ["""]        |  ["93"]     |   ["56"]
--------------------------------------------
4  |    ["100"]      |   ["78"]    |   ["90"]
--------------------------------------------

我需要将 column1 的所有 null 值转换为空数组 []

id |  column_1       | column_2    | column_3
--------------------------------------------
1  |    ["12"]       |   null     |    ["67"]
--------------------------------------------
2  |    []           |   ["78"]    |   ["90"]
--------------------------------------------
3  |    ["""]        |  ["93"]     |   ["56"]
--------------------------------------------
4  |    ["100"]      |   ["78"]    |   ["90"]
--------------------------------------------

使用此代码,但它不适合我。

df.withColumn("column_1", coalesce(column_1, array().cast("array<string>")))

感谢您的帮助!

【问题讨论】:

    标签: pyspark apache-spark-sql


    【解决方案1】:

    代码对我来说工作得很好,除了你需要将column_1 包装成引号"column_1"。另外,您不需要投射,只需array() 就足够了。

    df.withColumn("column_1", coalesce('column_1', array()))
    

    【讨论】:

      【解决方案2】:

      fillna() 与子集一起使用。

      参考https://stackoverflow.com/a/45070181

      【讨论】:

        猜你喜欢
        • 2018-06-12
        • 2019-01-11
        • 2020-03-22
        • 1970-01-01
        • 2020-10-23
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多