dataframe - 将数据框的架构更改为其他架构
问题描述
我有看起来像这样的数据框
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 函数相关的附加说明:它可以采用字符串列名列表来仅将列移动到结构中,或者如果您需要表达式列表。
推荐阅读
- php - TCPDF 问题:如何对齐文本和图像?
- ruby-on-rails - 在范围内使用关联域进行计算
- alphabet - ∑和∑1的区别
- spring - 混合参数策略 - 仅使用命名、位置或 JPA 序数策略之一
- c# - 在 c# 中获取属性的调用者信息
- javascript - 在 angular6 中刷新页面时,用户名将为空
- android-studio - Android Studio Web-view 访问存储的权限?
- python - 为什么图像块在提取时会像素化,但在连接时会变得正常?
- javascript - 我如何将所有这些代码存储在变量中
- python - 为 pip 设置私人仓库需要常规包的密码