我有一个看起来像这样的数据框
df.printSchema()
root
|-- id: integer (nullable = true)
|-- data: struct (nullable = true)
| |-- foo01 string (nullable = true)
| |-- bar01 string (nullable = true)
| |-- foo02 string (nullable = true)
| |-- bar02 string (nullable = true)
我想把它改成
root
|-- id: integer (nullable = true)
|-- foo: struct (nullable = true)
| |-- foo01 string (nullable = true)
| |-- foo02 string (nullable = true)
|-- bar: struct (nullable = true)
| |-- bar01 string (nullable = true)
| |-- bar02 string (nullable = true)
解决这个问题的最佳方法是什么?
最佳答案
您可以简单地使用struct Pyspark 函数。
from pyspark.sql.functions import struct
new_df = df.select(
'id',
struct('data.foo01', 'data.foo02').alias('foo'),
struct('data.bar01', 'data.bar02').alias('bar'),
)
与 struct Pyspark 函数相关的附加说明:它可以采用字符串列名称列表来仅将列移动到结构中,或者如果您需要表达式列表。
关于dataframe - 将数据框的架构更改为其他架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64335890/