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

PySpark实现动态层级JSON转换为指定结构DataFrame

使用Python Pandas实现转换

核心思路

先提取版本信息,再遍历所有FruitN条目,将每个条目的名称、版本与对应水果数据合并为行记录,最后用Pandas整理成目标结构的DataFrame。

代码实现

import pandas as pd

# 原始JSON数据(也可通过json.load从文件读取)
data = {
    "Version": "V1",
    "Fruit1": {
        "Apple": 60.0,
        "Orange": 60.0,
        "Melon": 60.0
    },
    "Fruit2": {
        "Strawberry": 40.0,
        "Orange": 60.0,
        "Melon": 40.0
    },
    "Fruit3": {
        "Apple": 90.0,
        "Orange": 90.0,
        "Melon": 95.0
    }
}

# 提取版本号,移除原字典中的Version字段
version = data.pop("Version")

# 构造每行的数据记录
rows = []
for fruit_name, fruit_values in data.items():
    # 合并版本、条目名称与水果数据
    row = {"Version": version, "Name": fruit_name}
    row.update(fruit_values)
    rows.append(row)

# 生成DataFrame并调整列顺序
df = pd.DataFrame(rows)
# 确保Version和Name列排在最前面
column_order = ["Version", "Name"] + [col for col in df.columns if col not in ["Version", "Name"]]
df = df[column_order]

# 查看结果
print(df)

效果说明

  • 无论FruitN的数量增减,代码都能自动遍历所有条目,无需修改逻辑
  • 缺失的水果值会自动填充为NaN(对应示例中的null)
  • 列顺序固定将Version和Name放在最前,其余水果列按出现顺序排列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:15:13