gpt4 book ai didi

python - pySpark:如何在数据框中的 arrayType 列中获取 structType 中的所有元素名称?

转载 作者:行者123 更新时间:2023-12-05 01:07:41 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框:

 |-- name: string (nullable = true)
|-- age: string (nullable = true)
|-- job: string (nullable = true)
|-- hobbies: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- favorite: string (nullable = true)
| | |-- non-favorite: string (nullable = true)

我正在尝试获取这些信息:

['favorite', 'non-favorite']

但是,我找到的唯一最接近的解决方案是使用带有 withColumn 的explode 函数,但它是基于我已经知道元素名称的假设。但我想做的是,在不知道元素名称的情况下,我只想用列名获取元素名称,在本例中为“爱好”。有没有一种好方法可以获取任何给定列中的所有元素名称?

最佳答案

对于具有此架构的给定数据框:

df.printSchema()

root
|-- hobbies: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- favorite: string (nullable = false)
| | |-- non-favorite: string (nullable = false)

您可以选择结构的字段名称为:

struct_fields = df.schema['hobbies'].dataType.elementType.fieldNames()

# output: ['favorite', 'non-favorite']

关于python - pySpark:如何在数据框中的 arrayType 列中获取 structType 中的所有元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66996443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com