将空数组转换为null pyspark

将空数组转换为null pyspark,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我有一个pyspark数据帧: 数据帧示例: id | column_1 | column_2 | column_3 -------------------------------------------- 1 | ["12"] | ["""] | ["67"] -------------------------------------------- 2 | ["""] | ["78"] | ["90"

我有一个pyspark数据帧:

数据帧示例:

id |  column_1       | column_2    | column_3
--------------------------------------------
1  |    ["12"]       |   ["""]     |    ["67"]
--------------------------------------------
2  |    ["""]        |   ["78"]    |   ["90"]
--------------------------------------------
3  |    ["""]        |  ["93"]     |   ["56"]
--------------------------------------------
4  |    ["100"]      |   ["78"]    |   ["90"]
--------------------------------------------
我想将以下列的所有值
[“”]
转换为null:列1、列2、列3

调查结果:

id |  column_1       | column_2    | column_3
--------------------------------------------
1  |    ["12"]       |   null     |    ["67"]
--------------------------------------------
2  |    null        |   ["78"]    |   ["90"]
--------------------------------------------
3  |    null        |  ["93"]     |   ["56"]
--------------------------------------------
4  |    ["100"]      |   ["78"]    |   ["90"]
--------------------------------------------
我尝试了以下解决方案:

df = df.withColumn(
        "column_1",
        F.when((F.size(F.col("column_1")) == ""),
        F.lit(None)).otherwise(F.col("column_1"))
    ).withColumn(
        "column_2",
        F.when((F.size(F.col("column_2")) == ""),
        F.lit(None)).otherwise(F.col("column_2"))
    ).withColumn(
        "column_3",
        F.when((F.size(F.col("column_3")) == ""),
        F.lit(None)).otherwise(F.col("column_3"))
    )
但它会将所有内容转换为null。 如何在包含空字符串的空数组上进行测试通常是[“”]而不是[]。
谢谢

您可以在时使用
进行测试并替换以下值:

df.withColumn(
“第1栏”,
F.when(F.col(“column_1”)!=F.array(F.lit(“”)、#或“”)?
F.col(“第1列”)
))

对每个列执行此操作。

您可以在
时使用
进行测试,并替换以下值:

df.withColumn(
“第1栏”,
F.when(F.col(“column_1”)!=F.array(F.lit(“”)、#或“”)?
F.col(“第1列”)
))

对每个列都这样做。

数组总是只包含一个值?有时包含多个值。但我只放了一个example@Steven我在代码中也使用column>0进行了测试,但它将所有值都更改为null哪个版本的spark?数组始终只包含1个值?有时包含多个值。但我只添加了一个example@Steven我测试了我我的代码也使用column>0,但它将所有内容都更改为空,spark的哪个版本?