使用Python和Pandas将多层嵌套JSON转换为扁平化DataFrame
实现方案
提供两种常用实现路径,可根据使用场景选择:
方案1:原生Python预处理JSON后转DataFrame
逻辑直观无额外学习成本,灵活度最高:
import pandas as pd # 假设从API拿到的原始JSON已加载为raw_data变量 raw_data = { # 此处替换为你的原始JSON数据 } result_list = [] # 第一层遍历取日期作为day字段 for day, size_map in raw_data.items(): # 第二层遍历取每个尺码对应的业务字段 for size_data in size_map.values(): # 合并日期字段与业务字段 result_list.append({ "day": day, **size_data }) # 如需生成DataFrame直接调用即可 df = pd.DataFrame(result_list) # 如需直接获取符合要求的JSON列表,使用result_list即可
方案2:直接使用Pandas内置方法转换
无需手写循环,适合直接对接API响应生成DataFrame的场景:
import pandas as pd # 原始JSON已加载为raw_data变量 raw_data = { # 此处替换为你的原始JSON数据 } # 第一层日期转为行索引,第二层尺码转为列 df = pd.DataFrame.from_dict(raw_data, orient='index').stack().reset_index() # 展开业务字段所在的字典列,关联日期字段 df = pd.json_normalize(df[0]).join(df['level_0'].rename('day')) # 调整为你需要的列顺序 df = df[['day', 'sales', 'balance', 'size_name', 'size_origin']]
两种方案输出结果完全匹配你要求的结构,性能差异在数据量低于10万条时几乎可以忽略。
内容的提问来源于stack exchange,提问作者PankeyDie
相关产品推荐
相关产品推荐

