如何用Pandas解析嵌套JSON,展开ISO 3166-2国家地区数据
解决ISO 3166-2 JSON转结构化DataFrame的问题
针对嵌套字典展开的问题,直接遍历每行国家数据并拆分地区信息是最直观可靠的方案,具体代码如下:
import pandas as pd import json # 读取并转置原始数据 data = "/content/data.json" df = pd.read_json(data).T # 初始化列表存储拆分后的行数据 result_rows = [] # 遍历每个国家的行数据 for country_code, row in df.iterrows(): country_name = row['name'] # 遍历当前国家的所有地区 for region_code, region_name in row['divisions'].items(): result_rows.append({ '国家代码': country_code, '国家名称': country_name, '地区代码': region_code, '地区名称': region_name }) # 转换为目标格式的DataFrame final_df = pd.DataFrame(result_rows)
为什么之前的方法失效?
你尝试的json_normalize(df['divisions']).unstack().apply(pd.Series)会先把每个地区代码转为单独列,unstack操作后会打乱国家与地区的对应关系,导致无法直接关联国家代码和名称。而遍历行的方式能确保每一条地区记录都绑定对应的国家信息,最终生成的结构完全符合需求。
如果想要更简洁的写法,也可以用explode结合apply实现,但遍历的方式逻辑更清晰,便于后续维护和调试。
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

