Apache spark 将所有列设为空Pyspark DataFrame

Apache spark 将所有列设为空Pyspark DataFrame,apache-spark,pyspark,Apache Spark,Pyspark,我正在寻找一个列都为空的列表。这些列中可能有值,也可能没有值。理想情况下,我会尝试清除列中的数据 这是我目前尝试的: null_cols = ['a', 'b', 'c'] for cols in null_cols: df = ( df.withColumn(cols, F.when(F.col(cols).isNotNull(), F.lit(None))) ) 有什么想法吗?你不需要在这里有when语句,因为你不在乎

我正在寻找一个列都为空的列表。这些列中可能有值,也可能没有值。理想情况下,我会尝试清除列中的数据

这是我目前尝试的:

    null_cols = ['a', 'b', 'c']
    for cols in null_cols:
        df = (
            df.withColumn(cols, F.when(F.col(cols).isNotNull(), F.lit(None)))
        )

有什么想法吗?

你不需要在这里有
when
语句,因为你不在乎列中是否已经有数据,只要用
None
覆盖它即可。照办

null_cols = ['a', 'b', 'c']
for col in null_cols:
    df = df.withColumn(col, F.lit(None))

当然,这些列必须是可为空的,我在这里假设这一点。

如果这些列不可为空?为什么会这样呢?约束?如果列不可为null,则不能将值设置为null。因此,上面的代码将导致错误。但默认为空列。您可以使用
df.printSchema()
检查列上的约束是什么。有空的列可能是有意义的,因为NULL总是一个特殊的情况,一些函数可能在包含空值的列上不起作用。我的意思是:没有空列可能是有意义的,例如考虑计算平均值。如何处理空值?应该忽略它吗?它也应该返回Null吗?如果你不想考虑这些特殊的情况,不要认为这些数据是有效的,你可以把<代码>不可空的< /代码>约束添加到你的模式中,谢谢!如何仅对上面的列迭代printSchema()?我只对某些属性感兴趣,因此希望缩小pritnSchema返回的范围。json方法工作得很好!