Pyspark执行sum()报'Column' object is not callable错误求解
错误原因
你使用的是PySpark的DataFrame操作逻辑,代码中生成的b是PySpark原生的Column类型对象,不是Pandas的布尔Series。PySpark的Column类没有可直接调用的sum()实例方法,直接执行b.sum()相当于把Column对象作为函数调用,就会触发'Column' object is not callable报错。
解决方法
你需要配合PySpark内置的聚合函数和DataFrame的聚合方法来统计符合条件的记录数,完整可运行的代码如下:
from pyspark.sql import functions as F # 生成布尔判断列 b = t['testdate'] < F.lit('2017-02-01') # 统计触发截断的记录总数:先把布尔值转成int(True=1、False=0)求和,再拉取本地结果 counts = t.agg(F.sum(b.cast('int'))).collect()[0][0] # 完成日期截断生成新列 t = t.withColumn('testclipped', F.when(b, F.lit('2017-02-01')).otherwise(F.col('testdate')))
内容的提问来源于stack exchange,提问作者Rens
相关产品推荐
相关产品推荐

