如何将嵌套的Struct列展开为多列?

我正在尝试将嵌套struct类型(请参见下文)的DataFrame列扩展为多列。我正在使用的Struct模式看起来像

{"foo": 3, "bar": {"baz": 2}}

理想情况下,我想将以上内容扩展为两列("foo"和"bar.baz")。然而,当我尝试使用.select("data.*")(这里data是该结构柱),我只得到列foobar,其中bar仍然是一个struct

有没有办法可以将Struct扩展到两层?

回答:

您可以选择 data.bar.baz as bar.baz:

df.show()

+-------+

| data|

+-------+

|[3,[2]]|

+-------+

df.printSchema()

root

|-- data: struct (nullable = false)

| |-- foo: long (nullable = true)

| |-- bar: struct (nullable = false)

| | |-- baz: long (nullable = true)

In pyspark:

import pyspark.sql.functions as F

df.select(F.col("data.foo").alias("foo"), F.col("data.bar.baz").alias("bar.baz")).show()

+---+-------+

|foo|bar.baz|

+---+-------+

| 3| 2|

+---+-------+

以上是 如何将嵌套的Struct列展开为多列? 的全部内容, 来源链接: utcz.com/qa/409341.html

回到顶部