您可以使用内置拆分功能:
from pyspark.sql.functions import col, split
df = sc.parallelize([
(1, "200, 201, 202"), (1, "23, 24, 34, 45"), (1, None),
(2, "32"), (2, None)]).toDF(["id", "ev"])
df.select(col("id"), split(col("ev"), ",\s*").alias("ev"))
如果要将数据转换为数字类型,可以按如下方式转换:
df.withColumn(
"ev",
split(col("ev"), ",\s*").cast("array").alias("ev")
)
要么
from pyspark.sql.types import ArrayType, IntegerType
df.withColumn(
"ev",
split(col("ev"), ",\s*").cast(ArrayType(IntegerType())).alias("ev")
)