TypeError:type Column没有定义__round__方法[duplicate]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:type Column没有定义__round__方法[duplicate]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我的数据看起来像这样:

+-------+-------+------+----------+
|book_id|user_id|rating|prediction|
+-------+-------+------+----------+
|    148|    588|     4|  3.953999|
|    148|  28767|     3| 2.5816362|
|    148|  41282|     3|  4.185532|
|    148|  18313|     4| 3.6297297|
|    148|  11272|     3| 3.0962112|
+-------+-------+------+----------+

我想通过舍入预测列中的值来创建新的列名'pred_class'。我运行这段代码:

results.withColumn('pred_class',round(results['prediction']))

它给了我这样的错误:

TypeError:type Column不定义round方法

有人可以帮我这个吗?谢谢!

答案

您正在使用基本python中的round函数对未正确定义的spark Column对象。使用roundpyspark.sql.functions函数代替:

results = spark.createDataFrame([{'book_id': 148, 'user_id': 588, 'rating': 4, 'prediction': 3.953999}])

from pyspark.sql.functions import round   # import the method here
results.withColumn('pred_class',round(results['prediction'])).show()

+-------+----------+------+-------+----------+
|book_id|prediction|rating|user_id|pred_class|
+-------+----------+------+-------+----------+
|    148|  3.953999|     4|    588|       4.0|
+-------+----------+------+-------+----------+

以上是关于TypeError:type Column没有定义__round__方法[duplicate]的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 和错误“TypeError:必须是实数,而不是 Column”,当尝试在窗口上使用定义的函数查找指南针方位时

Apollo Graphql 自定义标量 JSON - 抱怨“TypeError:type.getFields 不是函数”

TypeError:Cannot read property 'type' of undefined

TypeError [ERR_INVALID_ARG_TYPE]:“listener”参数必须是函数类型。收到未定义

NodeJS - TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义

图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义