首页 > 解决方案 > 如何从结构转换 DataFrame 列构造> 在 pyspark 中?

问题描述

我有一个具有这种结构的 DataFrame:

root
 |-- features: struct (nullable = true)
 |    |-- value: double (nullable = true)

我想将双精度类型的值转换为“数组值”类型。我怎样才能做到这一点?

标签: apache-sparkpysparkapache-spark-sqltype-conversion

解决方案


您可以使用结构和数组显式指定转换:

import pyspark.sql.functions as F

df.printSchema()
#root
# |-- features: struct (nullable = false)
# |    |-- value: double (nullable = false)

df2 = df.withColumn(
    'features',
    F.struct(
        F.array(F.col('features')['value']).alias('values')
    )
)

df2.printSchema()
#root
# |-- features: struct (nullable = false)
# |    |-- values: array (nullable = false)
# |    |    |-- element: double (containsNull = false)

推荐阅读