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
相关产品推荐
相关产品推荐

