我正在使用 PySpark DataFrame 并尝试计算每列中空值的数量。我尝试了以下表达:
[col(c).isNull().count() for c in df.columns]
抛出错误:
----> 2 [col(c).isNull().count() for c in df.columns]
TypeError: 'Column' object is not callable
另一方面,这个表达式没有任何问题:
[df.filter(col(c).isNull()).count() for c in df.columns]
输出:
[0, 0, 0, 0, 0, 0, 109, 109, 0, 0, 0, 0, 0]
我很困惑为什么第一个表达式失败而第二个表达式有效。有人可以解释两者之间的区别以及为什么在第一种情况下会出现错误吗?
表达式 1 中的错误是它在 Column 对象上调用
count()
,这是不允许的。
在表达式 2 中,对过滤后的 DataFrame 调用 count(),这是正确的用法。