当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PySpark Column isNull方法用法及代码示例


PySpark 列的isNull() 方法标识值为空的行。

返回值

PySpark 列 (pyspark.sql.column.Column)。

例子

考虑以下PySpark DataFrame:

df = spark.createDataFrame([["Alex", 25], ["Bob", 30], ["Cathy", None]], ["name", "age"])
df.show()



+-----+----+
| name| age|
+-----+----+
| Alex|  25|
|  Bob|  30|
|Cathy|null|
+-----+----+

识别 PySpark DataFrame 中某些值为空的行

要识别 age 值为 null 的行:

df.select(df.age.isNull()).show()



+-----------------+
|(age IS NOT NULL)|
+-----------------+
|             true|
|             true|
|            false|
+-----------------+

获取 PySpark DataFrame 中某些值为空的行

要获取 age 值为 null 的行:

df.where(df.age.isNull()).show()



+-----+----+
| name| age|
+-----+----+
|Cathy|null|
+-----+----+

此处, where(~) 方法获取与isNull() 方法返回的布尔列中的True 对应的行。

警告 - 使用相等性来比较空值

一种常见的错误是使用相等性来比较空值。例如,考虑以下 DataFrame:

df = spark.createDataFrame([["Alex", 25.0], ["Bob", 30.0], ["Cathy", None]], ["name", "age"])
df.show()



+-----+----+
| name| age|
+-----+----+
| Alex|25.0|
|  Bob|30.0|
|Cathy|null|
+-----+----+

让我们获取 age 等于 None 的行:

from pyspark.sql import functions as F
df.where(F.col("age") == None).show()



+----+---+
|name|age|
+----+---+
+----+---+

请注意 Cathy 的 agenull 的行未被选取。比较 null 值时,我们应该始终使用 isNull() 代替。

空值和 NaN 的处理方式不同

考虑以下PySpark DataFrame:

import numpy as np
df = spark.createDataFrame([["Alex", 25.0], ["Bob", np.nan], ["Cathy", None]], ["name", "age"])
df.show()



+-----+----+
| name| age|
+-----+----+
| Alex|25.0|
|  Bob| NaN|
|Cathy|null|
+-----+----+

此处, age 列包含 NaNnull 。在 PySpark 中,NaNnull 被视为不同的实体,如下所示:

df.where(F.col("age").isNull()).show()



+-----+----+
| name| age|
+-----+----+
|Cathy|null|
+-----+----+

在这里,请注意 Bob 的 ageNaN 的行没有被选取。要获取包含 NaN 的行,请使用 isnan(-) 方法,如下所示:

df.where(F.isnan("age")).show()



+----+---+
|name|age|
+----+---+
| Bob|NaN|
+----+---+

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark Column | isNull method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。