import numpy as np
data = [
(1, 1, None),
(1, 2, float(5)),
(1, 3, np.nan),
(1, 4, None),
(1, 5, float(10)),
(1, 6, float("nan")),
(1, 6, float("nan")),
]
df = spark.createDataFrame(data, ("session", "timestamp1", "id2"))
预期输出
每列的 nan/null 计数的数据框
注:
我在堆栈溢出中发现的先前问题只检查 null 而不是 nan。
这就是为什么我创建了一个新问题。
我知道我可以使用
isnull()
Spark 中的函数以查找 Spark 列中 Null 值的数量,但如何在 Spark 数据框中查找 Nan 值?
请您参考如下方法:
您可以使用显示的方法 here并替换 isNull
与 isnan
:
from pyspark.sql.functions import isnan, when, count, col
df.select([count(when(isnan(c), c)).alias(c) for c in df.columns]).show()
+-------+----------+---+
|session|timestamp1|id2|
+-------+----------+---+
| 0| 0| 3|
+-------+----------+---+
或
df.select([count(when(isnan(c) | col(c).isNull(), c)).alias(c) for c in df.columns]).show()
+-------+----------+---+
|session|timestamp1|id2|
+-------+----------+---+
| 0| 0| 5|
+-------+----------+---+