【问题标题】:Efficient way to find columns that contain ANY null values查找包含任何空值的列的有效方法
【发布时间】:2021-07-16 14:06:54
【问题描述】:

我想返回包含至少 1 个空值的所有列的列表。我在 StackOverflow 上看到的所有其他类似问题都在过滤值为空的列,但这绝对不是最佳选择,因为它必须找到所有空值,但我只想找到一个空值。

我可以过滤值为空的列,然后如果此结果的计数大于 1,则我知道该列包含空值。但是,正如我所说,这是次优的,因为它首先找到所有空值。

有什么办法吗?

此外,有什么方法可以在不遍历所有列的情况下做到这一点?

【问题讨论】:

标签: apache-spark pyspark


【解决方案1】:

Spark 的 SQL 函数any 可以检查列的任何值是否满足条件。

from pyspark.sql import functions as F

data = [[1,2,3],[None, 5, 6], [7, None, 9]]
df = spark.createDataFrame(data, schema=["col1", "col2", "col3"])

cols = [f"any({col} is null) as {col}_contains_null" for col in df.columns]
df.selectExpr(cols).show()

输出:

+------------------+------------------+------------------+
|col1_contains_null|col2_contains_null|col3_contains_null|
+------------------+------------------+------------------+
|              true|              true|             false|
+------------------+------------------+------------------+

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 2019-08-04
    • 2022-12-22
    • 2012-10-28
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    相关资源
    最近更新 更多