You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中展开数组列并保留根列名(如col2.NM)

PySpark展开数组列并生成指定格式列名

要展开col2数组列并得到col1和col2.NM格式的列,你可以用explode函数先拆分数组,再提取结构体字段并重命名:

from pyspark.sql.functions import explode, col

# 假设你的DataFrame名为df
df_expanded = df.withColumn("col2_exploded", explode(col("col2"))) \
                .select(
                    "col1",
                    col("col2_exploded.NM").alias("col2.NM")
                )

步骤说明:

  1. 拆分数组:explode(col("col2"))会把col2数组中的每个struct元素拆成单独行,生成临时列col2_exploded。
  2. 提取并重命名字段:通过col("col2_exploded.NM")提取结构体里的NM值,用alias("col2.NM")将列名设置为要求的col2.NM格式,最后保留col1和这个新列。

如果col2可能存在空数组,explode会过滤掉对应行。想保留这些行的话,改用explode_outer:

df_expanded = df.withColumn("col2_exploded", explode_outer(col("col2"))) \
                .select(
                    "col1",
                    col("col2_exploded.NM").alias("col2.NM")
                )

这种方式下,空数组对应的col2.NM值会是null,不会丢失原有的col1数据。

内容的提问来源于stack exchange,提问作者ista120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:46:00