如何在Python中将指定结构的JSON数组转换为目标格式的DataFrame?
如何将嵌套JSON数组转换为指定格式的DataFrame
我来帮你搞定这个转换需求,用Python的pandas库就能轻松实现,下面是具体的步骤和代码示例:
步骤说明
- 结构化原始数据:先把嵌套的JSON数组拆解成维度、金额类型、金额值的结构化字典列表;
- 转换为初始DataFrame:将结构化列表转换成pandas的长表格式DataFrame;
- 重塑为宽表:使用pivot方法把长表转成你需要的宽表结构;
- 优化格式:调整列名,让最终结果完全匹配你的要求。
完整代码示例
import pandas as pd # 你的原始JSON数组数据 raw_data = [ [ {"value": "Dimension1", "formattedValue": "Dimension1"}, {"value": "Amount1", "formattedValue": "Amount1"}, {"value": "17253512.430000003", "formattedValue": "17,253,512.43"} ], [ {"value": "Dimension1", "formattedValue": "Dimension1"}, {"value": "Amount2", "formattedValue": "Amount2"}, {"value": "-143721131.88999993", "formattedValue": "-143,721,131.89"} ], [ {"value": "Dimension1", "formattedValue": "Dimension1"}, {"value": "Amount3", "formattedValue": "Amount3"}, {"value": "160974644.31999999", "formattedValue": "160,974,644.32"} ] ] # 第一步:处理原始数据,提取关键信息 processed_rows = [] for entry in raw_data: # 提取维度、金额类型、格式化后的金额值 dimension = entry[0]['formattedValue'] amount_category = entry[1]['formattedValue'] amount_value = entry[2]['formattedValue'] processed_rows.append({ 'Dimension': dimension, 'AmountType': amount_category, 'Value': amount_value }) # 第二步:转换为初始长表DataFrame initial_df = pd.DataFrame(processed_rows) # 第三步:重塑为目标宽表格式 final_df = initial_df.pivot( index='Dimension', columns='AmountType', values='Value' ).reset_index() # 去掉列名的层级标签,让表格更简洁 final_df.columns.name = None # 查看结果 print(final_df) # 如果需要直接生成Markdown格式的表格(需先安装tabulate库:pip install tabulate) print("\nMarkdown格式表格:") print(final_df.to_markdown(index=False))
运行结果
执行代码后,你会得到完全匹配需求的Markdown表格:
| Dimension | Amount1 | Amount2 | Amount3 |
|---|---|---|---|
| Dimension1 | 17,253,512.43 | -143,721,131.89 | 160,974,644.32 |
内容的提问来源于stack exchange,提问作者Muthu
相关产品推荐
相关产品推荐

