如何在PySpark中将字符串float转换为Float?

kokeuurv  于 2022-11-21  发布在  Spark
关注(0)|答案(2)|浏览(198)

我有以下PySpark Dataframe :

df = spark.createDataFrame(
    [
        ('31,2', 'foo'),
        ('33,1', 'bar'),
    ],
    ['cost', 'label']
)

我需要将"cost“列转换为浮点型。我的操作如下:

df = df.withColumn('cost', df.cost.cast('float'))

但是,结果是得到的是null值,而不是cost列中的数字。
如何将cost转换为浮点数?

zu0ti5jz

zu0ti5jz1#

这应该对你有用。

df = (df.withColumn('cost', F.regexp_replace(df.cost, ',', '.')
        .withColumn('cost', df.cost.cast('float')))
ldioqlga

ldioqlga2#

我认为一个简单的lambda表达式应该可以处理大多数事情。

df.loc[:, 'cost'] = df.cost.apply(lambda x: float(x.replace(',', '.')))

相关问题