PySpark Dataframe:逗号点

时间:2017-05-17 10:32:25

标签: python pyspark spark-dataframe

我在浮点数中使用逗号导入数据,我想知道如何才能转换'逗号成点。我正在使用pyspark数据帧,所以我尝试了这个:

commaToDot = udf(lambda x : str(x).replace(',', '.'), FloatType())

myData.withColumn('area',commaToDot(myData.area))

它肯定不起作用。 那么我们可以直接用spark替换数据框中的数据,还是应该转换为numpy类型还是其他什么?

谢谢!

2 个答案:

答案 0 :(得分:6)

另一种方法(不使用UDF)是:

16102208556492

答案 1 :(得分:3)

我认为你错过了

from pyspark.sql.types import FloatType

正如Pushkr所说,如果不将结果转换为浮点数,带有替换的udf将返回字符串列

from pyspark import SQLContext
from pyspark.sql.functions import udf
from pyspark.sql.types import FloatType
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("ReadCSV")
sc = SparkContext(conf=conf)
sqlctx = SQLContext(sc)
df = sqlctx.read.option("delimiter", ";").load("test.csv", format="csv")
df.show()
commaToDot = udf(lambda x : float(str(x).replace(',', '.')), FloatType())
df2=df.withColumn('area',commaToDot(df._c0))
df2.printSchema()
df2.show()

我使用单列文件,在spark 2.11 / python 3.6

上测试