如何在 pyspark 中将 DataFrame 列从 struct<value:double> 转换为 struct<values:array<double>>?

How to convert DataFrame columns from struct<value:double> to struct<values:array<double>> in pyspark?

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

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

我想将 double 类型的值转换为“数组值”类型。 我该怎么做?

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

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)