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

如何将JSON数据集中列内的数组转为多列(Python/Spark/Pandas)

数组列转多列的实现方案(Spark/Pandas/纯Python)

针对你提供的JSON数据结构(items为结构体数组),以下是三种主流工具的实现方法,最终提取出id和idAccount列:

一、Spark 实现

Spark处理嵌套数组最直接的方式是先展开数组,再提取结构体字段:

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode

# 初始化SparkSession
spark = SparkSession.builder.appName("ArrayToColumns").getOrCreate()

# 读取JSON数据(替换为你的文件路径)
df = spark.read.json("data.json")

# 1. 展开items数组,每个数组元素生成一行
exploded_df = df.select(explode("items").alias("item"))

# 2. 提取结构体中的指定字段
result_df = exploded_df.select("item.id", "item.idAccount")

# 查看结果
result_df.show()

如果需要保留原数据的其他列,可在select时一并加入,例如:df.select("other_column", explode("items").alias("item"))。

二、Pandas 实现

Pandas通过explode展开数组后,将结构体转为多列:

import pandas as pd
import json

# 读取JSON数据(替换为你的文件路径)
with open("data.json", "r") as f:
    data = json.load(f)
df = pd.DataFrame(data)

# 1. 展开items数组,重置索引
exploded_df = df.explode("items", ignore_index=True)

# 2. 将结构体列拆分为多列,提取目标字段
result_df = exploded_df["items"].apply(pd.Series)[["id", "idAccount"]]

# 查看结果
print(result_df)

若需保留原数据其他列,可合并到结果中:result_df = pd.concat([exploded_df.drop("items", axis=1), result_df], axis=1)。

三、纯Python 实现

无需依赖数据分析库,直接用原生JSON处理:

import json

# 读取JSON数据(替换为你的文件路径)
with open("data.json", "r") as f:
    data = json.load(f)

# 遍历提取目标字段
result = []
for entry in data:
    for item in entry["items"]:
        result.append({
            "id": item["id"],
            "idAccount": item["idAccount"]
        })

# 打印表格形式结果
print("id\tidAccount")
for row in result:
    print(f"{row['id']}\t{row['idAccount']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:45:58