如何将嵌套的Struct列展开为多列?
我正在尝试将嵌套struct类型(请参见下文)的DataFrame列扩展为多列。我正在使用的Struct模式看起来像
{"foo": 3, "bar": {"baz": 2}}
。
理想情况下,我想将以上内容扩展为两列("foo"和"bar.baz")
。然而,当我尝试使用.select("data.*")
(这里data是该结构柱),我只得到列foo
和bar
,其中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 Fdf.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