问题描述
我想将嵌套列展平为单独的列,仅包含几个特定值。
首先,我从事件中心的 AVRO 捕获文件开始。一旦我将其转换为 Python 中的数据帧,我会在删除不相关的内容后收到以下列。
我接下来要做的是将这一列的剩余特定值展平。
我可以为一个单元格完成此操作,但因为我正在处理嵌套结构,该列不可迭代。
有人可以帮我吗?
解决方法
您的架构中有 2 个 data
字段,因此我将第一个字段称为 data_struct
,第二个字段为 data_array
。如果您执行 avro_df_body.select('data_struct.data_array')
,您将有一个 ArrayType
列,您可以应用 explode
函数将其分解为多行。
(avro_df_body
.withColumn('tmp',F.explode('data_struct.data_array'))
.withColumn('speed',F.col('tmp.a'))
.withColumn('timestamp',F.col('tmp.time'))
.show()
)