PySpark:使用 .count() 时抛出错误“Column”对象不可调用

问题描述 投票:0回答:1

我正在使用 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]

我很困惑为什么第一个表达式失败而第二个表达式有效。有人可以解释两者之间的区别以及为什么在第一种情况下会出现错误吗?

python dataframe pyspark apache-spark-sql
1个回答
0
投票

表达式 1 中的错误是它在 Column 对象上调用

count()
,这是不允许的。

在表达式 2 中,对过滤后的 DataFrame 调用 count(),这是正确的用法。

© www.soinside.com 2019 - 2024. All rights reserved.