gpt4 book ai didi

python - 如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为 float / double ?

转载 作者:行者123 更新时间:2023-11-28 16:27:06 24 4
gpt4 key购买 nike

在 PySpark 1.6 DataFrame 中,目前没有用于将字符串转换为 float / double 的 Spark 内置函数。

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

New_RDD = RawDataRDD.map(lambda (house_name, price): (house_name, float(x.price))    # this 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 ,您可以像这样在列上使用 cast 函数:

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

关于python - 如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为 float / double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com