如何用Pandas扁平化键名不统一的JSON并转为DataFrame?
用Pandas处理键名不统一的嵌套JSON
解决方案代码
import pandas as pd # 假设已加载API返回的JSON为字典格式 json_data = { "data": { "1": { "item1": "data1", "item2": "data2", "item3": { "item4": { "item5": "bla1", "item6": "bla2", "item7": "bla3" } } }, "2": { "item1": "data3", "item2": "data4", "item3": { "item4": { "item5": "bla4", "item6": "bla5", "item7": "bla6" } } } } } # 1. 将外层不统一的键转为DataFrame列,展开基础字段 df = pd.DataFrame.from_dict(json_data['data'], orient='index').reset_index().rename(columns={'index': '编号'}) # 2. 扁平化嵌套的item3字段并重命名 nested_df = pd.json_normalize(df['item3']).rename( columns={ 'item4.item5': 'item5', 'item4.item6': 'item6', 'item4.item7': 'item7' } ) # 3. 合并所需字段得到最终结构 result_df = pd.concat([df[['编号', 'item1']], nested_df], axis=1) print(result_df)
代码说明
- 用
pd.DataFrame.from_dict配合orient='index',直接把外层"1""2"这类不规则键转为索引,再通过reset_index将索引转为单独的"编号"列,同时展开第一层的基础字段。 - 用
pd.json_normalize自动扁平化嵌套的item3结构,并重命名字段匹配目标格式。 - 通过
pd.concat合并需要的字段,快速得到目标DataFrame。
输出结果
编号 item1 item5 item6 item7 0 1 data1 bla1 bla2 bla3 1 2 data3 bla4 bla5 bla6
内容的提问来源于stack exchange,提问作者josoko
相关产品推荐
相关产品推荐

