我正在尝试使用pyspark在Spark数据帧中删除一些嵌套列 . 我发现这对于Scala来说似乎正在做我想要的但我不熟悉Scala并且不知道如何用Python编写它 .
https://stackoverflow.com/a/39943812/5706548
我真的很感激一些帮助 .
谢谢,
我正在尝试使用pyspark在Spark数据帧中删除一些嵌套列 . 我发现这对于Scala来说似乎正在做我想要的但我不熟悉Scala并且不知道如何用Python编写它 .
https://stackoverflow.com/a/39943812/5706548
我真的很感激一些帮助 .
谢谢,
3 回答
我发现使用pyspark的方法是首先将嵌套列转换为json,然后使用新的嵌套模式解析转换后的json,并过滤掉不需要的列 .
假设我有以下架构,我想从数据帧中删除
d
和e
(a.b.d
,a.e
):我使用了以下方法:
d
和e
为a
创建新架构 . 快速执行此操作的方法是手动从df.select("a").schema
中选择所需的字段,然后使用StructType
从所选字段创建新架构 . 或者,您可以通过遍历架构树并排除不需要的字段以编程方式执行此操作,例如:将
a
列转换为json:F.to_json("a")
使用步骤1中找到的新模式从步骤2解析json转换的
a
列:F.from_json("a_json", new_schema)
Althoug我've no solution for PySpark, maybe it'更容易将其翻译成python . 考虑带有架构的数据框
df
:那么如果你想要,例如要删除
name
,你可以这样做:Pyspark版本: