当前位置: 首页 > 知识库问答 >
问题:

如何在PySpark中将dataframe列从String类型更改为Double类型?

於子晋
2023-03-14

下面是我做的方式:

toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType())
changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show']))

我只是想知道,这是正确的方法吗,因为在运行逻辑回归时,我得到了一些错误,所以我想知道,这是麻烦的原因吗。

共有1个答案

闻人飞白
2023-03-14

这里不需要UDF。已提供cast方法和datatype实例:

from pyspark.sql.types import DoubleType

changedTypedf = joindf.withColumn("label", joindf["show"].cast(DoubleType()))

或短字符串

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

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

from pyspark.sql import types 

for t in ['BinaryType', 'BooleanType', 'ByteType', 'DateType', 
          'DecimalType', 'DoubleType', 'FloatType', 'IntegerType', 
           'LongType', 'ShortType', 'StringType', 'TimestampType']:
    print(f"{t}: {getattr(types, t)().simpleString()}")
BinaryType: binary
BooleanType: boolean
ByteType: tinyint
DateType: date
DecimalType: decimal(10,0)
DoubleType: double
FloatType: float
IntegerType: int
LongType: bigint
ShortType: smallint
StringType: string
TimestampType: timestamp
types.ArrayType(types.IntegerType()).simpleString()   
'array<int>'
types.MapType(types.StringType(), types.IntegerType()).simpleString()
'map<string,int>'
 类似资料:
  • 问题内容: 我有以下数据框: 现在,我想将Vacationdate列的数据类型更改为String,以便数据框也采用这种新类型并覆盖所有条目的数据类型数据。例如写后: Vacationdate的数据类型应被覆盖。 我已经使用过诸如cast,StringType或astype之类的函数,但是我没有成功。你知道怎么做吗? 问题答案: 让我们创建一些虚拟数据: 如果Spark> = 1.5.0,则可以使用

  • 我正在尝试更改JTable中具有特定值的单元格,以更改为另一个值。但是,原始值是Double数据类型,我想更改为String数据类型。我写了下面的代码来更改文本,但我不知道为什么所有的值都不能匹配if语句条件。 这就是我的数据存储在文本文件中的方式:Name,N/a,-1.0 我想把-1.0改为N/A。这是我的代码:

  • 我试图从一个表创建一个视图,并将其中一个列类型从varchar更改为DateStamp。 我的如下所示: 如何实现列具有datestamp格式的视图的结果? 谢谢你的建议。

  • 我们使用的是Oracle,我们有一个要求,允许希腊字符存储在数据库中。目前,我们的DB实例不允许我们插入希腊字符,如“?”。在谷歌上,我发现这与字符集有关。我的oracle使用不支持希腊字符的nls_characterset-we8mswin1252。如果必须工作,我必须将字符集更改为AL32UTF8、UTF8、AL16UTF16或WE8ISO8859P7之一。既然数据库中已经有了这么多的数据,现

  • 我有一个数据表 而这个结果就在这里 我想爆炸dev_property(列) 怎么爆炸?

  • 我有一个dataframe有两列(C,D)被定义为string列类型,但列中的数据实际上是日期。例如,C列的日期为“01-apr-2015”,而D列的日期为“20150401”。我想将这些数据更改为日期列类型,但我没有找到一个好的方法。我查看了在Spark SQL的DataFrame中将string列类型转换为Date列类型所需的堆栈溢出。日期格式可以是“01-apr-2015”,我看了这篇文章,