python - PySpark Dataframe:逗号到点

原文 标签 python pyspark spark-dataframe

我已经在浮点数中使用逗号导入了数据,我想知道如何将逗号“转换”为点。我正在使用pyspark数据帧,因此我尝试了以下操作:

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

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

而且肯定不行。
那么,我们可以直接在spark的dataframe中替换它,还是换成numpy类型或其他类型?
谢谢!

最佳答案

我想你失踪了

from pyspark.sql.types import FloatType

正如Pushkr所建议的那样,如果不将结果转换为float,带replace的udf将返回string列
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上进行了测试

相关文章:

python - 共享数组视图和数组数据副本之间的定义和区别?

python - Qt(PyQt)事件循环内的xmlrpc?

python - 在PySpark Builder中设置PySpark序列化器

python - PySpark:使用从列创建的元组添加新列

python - 如何在pyspark中将一列映射到多列? [重复]

python - 将Pandas DataFrame转换为Spark DataFrame

python - 如何将字符串的长度与同一列表中的整数进行比较?

python - 是否可以指定以前的目录python?

python - spark-在数据框中不存在列时设置为null

java - Apache Spark数据集API-不接受架构StructType