Skip to main content
 首页 » 编程设计

apache-spark之如何有效地找到 PySpark 数据帧中每列的 Null 和 Nan 值的计数

2024年10月25日14tuyile006

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并替换 isNullisnan :

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| 
+-------+----------+---+