Pyspark withColumn的Spark(使用python)问题

Pyspark withColumn的Spark(使用python)问题,pyspark,Pyspark,我正在学习使用python,在我的项目中,我特别需要使用spark。 (我对其他编程语言[C++、Matlab、R]很有信心) 我想读取一个csv文件,作为第一步,我想将列(字符串)的内容转换为正确的类型(分别是date、int和double) 下面是我写的 from pyspark.sql import SparkSession from pyspark.sql.functions import udf from pyspark.sql.types import DoubleType from

我正在学习使用python,在我的项目中,我特别需要使用spark。 (我对其他编程语言[C++、Matlab、R]很有信心)

我想读取一个csv文件,作为第一步,我想将列(字符串)的内容转换为正确的类型(分别是date、int和double)

下面是我写的

from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.types import DoubleType
from pyspark.sql.types import IntegerType
from pyspark.sql.types import DataType

spark = SparkSession.builder.appName("my_spark").getOrCreate()

# DATA PREPROCESSING


A2A_av1=spark.read.format('csv').options(header='true').load('../../Data/A2A_avail.csv')
A2A_av1.printSchema()


A2A_av1.withColumn("SUM_AVAILABLE_", A2A_av1["SUM_AVAILABLE_"].cast(DoubleType()))

A2A_av1.printSchema()
,没有任何变化。列SUM_AVAILBELS_uu仍然是一个字符串


你能告诉我我做错了什么吗?提前感谢

Pyspark不像pandas那样提供就地编辑。因此,您必须分配结果才能使更改生效。Spark数据帧是不可变的。将代码更改为

A2A_av1=A2A_av1.withColumn("SUM_AVAILABLE_", A2A_av1["SUM_AVAILABLE_"].cast(DoubleType()))
这应该有用:-)