如何将嵌套JSON转换为展开的规范化Pandas DataFrame?
解决方案
直接使用pd.json_normalize()的record_path和meta参数就能实现需求,前者指定要展开的嵌套数组,后者保留需要的其他字段,具体代码如下:
import json import pandas as pd with open("employee.json") as file: data = json.load(file) # 展开addresses数组并保留关联字段 data_df = pd.json_normalize( data, record_path="addresses", # 目标展开的嵌套数组字段 meta=[ "rec_id", "timestamp", "edited_timestamp", ["user", "id"], ["user", "name"] ] ) # 调整列名和顺序以匹配预期格式 data_df = data_df.rename(columns={ "address_type": "addresses.address_type", "street1": "addresses.street1", "street2": "addresses.street2", "city": "addresses.city" }) data_df = data_df[["rec_id", "addresses.address_type", "addresses.street1", "addresses.street2", "addresses.city", "timestamp", "edited_timestamp", "user.id", "user.name"]] display(data_df)
关键参数说明
record_path="addresses":告诉json_normalize将addresses数组中的每个对象拆分为单独的行。meta列表:指定需要保留的非数组字段,包括顶级字段和嵌套在user下的子字段,这些字段会被复制到每一行对应的展开记录中。
运行后就能得到你需要的完全展开的规范化DataFrame。
内容的提问来源于stack exchange,提问作者hktx80
相关产品推荐
相关产品推荐

