我有一个列为String的数据框。我想在PySpark中将列类型更改为Double type。以下是我的方法:toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType())changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show']))只是想知道,这是正确的方法,就像通过Logistic回归运行时一样,我遇到了一些错误,所以我想知道,这是麻烦的原因。
3 回答

慕田峪9158850
TA贡献1794条经验 获得超7个赞
保留列名,并通过使用与输入列相同的名称来避免添加额外的列:
changedTypedf = joindf.withColumn("show", joindf["show"].cast(DoubleType()))

qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
给定的答案足以解决问题,但是我想分享另一种可能引入新版本Spark的方式(我不确定),因此给定的答案未能解决。
我们可以使用col("colum_name")关键字到达spark语句中的列:
from pyspark.sql.functions import col , column
changedTypedf = joindf.withColumn("show", col("show").cast("double"))
添加回答
举报
0/150
提交
取消