我在浮点数中使用逗号导入数据,我想知道如何才能转换'逗号成点。我正在使用pyspark数据帧,所以我尝试了这个:
commaToDot = udf(lambda x : str(x).replace(',', '.'), FloatType())
myData.withColumn('area',commaToDot(myData.area))
它肯定不起作用。 那么我们可以直接用spark替换数据框中的数据,还是应该转换为numpy类型还是其他什么?
谢谢!
答案 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
上测试