如何在PySpark中将数据帧列从字符串类型更改为双精度类型?

我有一个列为字符串的数据帧。
我想在PySpark中将列类型更改为Double类型

我是这样做的:

toDoublefunc=UserDefinedFunction(lambda x:x,DoubleType())
changedTypedf=joindf.withColumn(“标签”,toDoublefunc(joindf[‘show’]))

我只是想知道,这是跑步的正确方式吗
通过逻辑回归,我得到了一些错误,所以我想知道,
这就是麻烦的原因吗

这里不需要自定义项列已经提供了带有数据类型实例的cast方法

pyspark.sql.types导入DoubleType的


changedTypedf=joindf.withColumn(“标签”,joindf[“显示”].cast(DoubleType())

或短字符串:

changedTypedf=joindf.withColumn(“label”,joindf[“show”].cast(“double”))

其中规范字符串名称(也可以支持其他变体)对应于simpleStringvalue。所以对于原子类型:

pyspark.sql导入类型中的


对于['BinaryType','BooleanType','ByteType','DateType'中的t,
“DecimalType”、“DoubleType”、“FloatType”、“IntegerType”,
“LongType”、“ShortType”、“StringType”、“TimestampType”]:
打印(f“{t}:{getattr(types,t)(.simpleString()}”)
BinaryType:binary
布尔型:布尔型
ByteType:tinyint
日期类型:日期
十进制类型:十进制(10,0)
双重类型:双重
浮动类型:浮动
整数类型:int
长字体:bigint
ShortType:smallint
StringType:string
时间戳类型:时间戳

比如复杂类型

types.ArrayType(types.IntegerType()).simpleString()
'array<int>'
types.MapType(types.StringType(),types.IntegerType()).simpleString()
'map<字符串,int>'

发表评论