列不可迭代-Apache Spark DataFrame-Python

时间:2019-02-10 23:25:00

标签: python apache-spark

我的spark数据框中有一个字符串类型的列int_rate,其所有值都类似于9.5%, 7.0%, etc

image是此列的外观

现在,我知道有一种方法可以将类型字符串转换为python中的float,但是仅适用于值应为9.5而没有%符号的情况。我尝试了以下方法:

df.int_rate = [x.strip('%') for x in df.int_rate]

为此link删除了%符号,但它抛出错误:

  

列不可迭代

我也尝试了link上列出的其他方法,但是似乎没有任何效果。有人可以帮我摆脱%符号并将我的列转换为float类型吗?

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案:

from pyspark.sql.functions import expr

df = spark.createDataFrame(["9.5%", "7.0%"], "string").toDF("int_rate")

df.withColumn("int_rate", expr("rtrim('%', int_rate)").cast("float")).show()

和另一个

from pyspark.sql.functions import regexp_replace

df.withColumn("int_rate", regexp_replace("int_rate", "%$", "").cast("float"))