Cof*_*Liu 1 apache-spark-sql pyspark
我的数据如下所示:
+-------+-------+------+----------+
|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|
+-------+-------+------+----------+
Run Code Online (Sandbox Code Playgroud)
我想通过四舍五入预测列中的值来创建一个新的列名“pred_class”。我运行这个代码:
results.withColumn('pred_class',round(results['prediction']))
Run Code Online (Sandbox Code Playgroud)
它给了我这样的错误:
类型错误:类型列没有定义圆形方法
任何人都可以帮助我吗?谢谢!
您在未正确定义round的 spark Column对象上使用来自 base python的函数。改用roundfrom 函数pyspark.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|
+-------+----------+------+-------+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2620 次 |
| 最近记录: |