其他分享
首页 > 其他分享> > PySpark 1.6:DataFrame:将一列从字符串转换为浮点/双精度

PySpark 1.6:DataFrame:将一列从字符串转换为浮点/双精度

作者:互联网

在PySpark 1.6 DataFrame中,当前没有Spark内置函数可以将字符串转换为float / double.

假设我们有一个带有(‘house_name’,’price’)的RDD,两个值都作为字符串.您想将价格从字符串转换为浮动.
在PySpark中,我们可以应用map和python float函数来实现这一点.

New_RDD =  RawDataRDD.map(lambda (house_name, price): (house_name, float(x.price))    #it works

在PySpark 1.6 Dataframe中,它不起作用:

New_DF = rawdataDF.select('house name', float('price')) #did not work

在内置的Pyspark功能可用之前,如何使用UDF实现此转换?
我按以下方式开发了此转换UDF:

from pyspark.sql.functions import udf

from pyspark.sql.types import StringType

def string_to_float(x):return float(x)

udfstring_to_float = udf(string_to_float, StringType())

rawdata.withColumn("house name",udfstring_to_float("price") )

有没有更好,更简单的方法来实现这一目标?

解决方法:

根据documentation,您可以在像这样的列上使用强制转换功能:

rawdata.withColumn("house name",rawdata["price"].cast(DoubleType().alias("price"))

标签:pyspark,type-conversion,spark-dataframe,python
来源: https://codeday.me/bug/20191119/2032554.html