我试图应用UDF函数对这些pct进行四舍五入,也许有更好的方法,我愿意接受它,因为我是pyspark的新手。 当我删除udf函数放弃舍入数字时,它起作用了,因此我对数据框充满信心。
所以,天才,请帮助我,爱与和平
我尝试在数据块中使用spqrk.sql来获取此数据帧,并且看起来不错。
以下是代码:
from pyspark.sql.types import IntegerType
round_func = udf(lambda x:round(x,2), IntegerType())
q2_res = q2_res.withColumn('pct_DISREGARD', round_func(col('pct')))
display(q2_res)
错误: AttributeError:“ NoneType”对象没有属性“ _jvm”
答案 0 :(得分:0)
显然,我们不能将pyspark.sql.functions
中的任何一个用于udf。在this线程中给出了详细的解释。您正在尝试使用round
函数,因此它不起作用,因为它仅适用于列。我们可以更简单地实现相同的功能:
from pyspark.sql.types import IntegerType
import pyspark.sql.functions as f
q2_res = q2_res.withColumn('pct_DISREGARD', f.round('pct', 2).astype(IntegerType()))
通常建议尽量避免使用UDF,因为它们非常慢。