【发布时间】:2021-06-01 15:03:26
【问题描述】:
我在一个名为 ele_df 的数据框中有 100 多列, 我想获取每列的非空值的数量,并让数字显示在具有相应列名的表中。
但是当我在下面尝试这段代码时:
from pyspark.sql.functions import col, count, isnan, lit, sum
def count_not_null(c, nan_as_null=False):
pred = col(c).isNotNull() & (~isnan(c) if nan_as_null else lit(True))
return sum(pred.cast("integer")).alias(c)
ele_df.agg(*[count_not_null(c) for c in ele_df.columns]).show()
它返回给我:
|74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506|74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 74876506| 这意味着每个单元格都有一个值,但事实是有很多像这样的空单元格:
+-------------+---------------------+---------------------+
|Business_ID_2|Elementum_Attribute_5|Elementum_Attribute_6|
+-------------+---------------------+---------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
当我对这些列使用 distinctCount() 时,它都返回一个,我猜它会将空值视为实际值?
请帮我解决这个问题
【问题讨论】: