Python pandas如何提取嵌套JSON字典生成目标结构DataFrame
问题原因
使用pd.DataFrame.from_dict(data)时,pandas只会解析JSON最外层的键值对,内层嵌套的字典结构不会自动拆分,因此Family字段会以整列字典对象的形式存在,展示为{...}格式,无法直接读取内部字段。
解决方案
方法1:读取时直接自动拆分嵌套结构(推荐)
直接使用pandas自带的json_normalize方法,会自动递归拆分所有层级的嵌套字典,一步生成扁平化表格:
import pandas as pd # 直接读取并自动拆分层级字段 df = pd.json_normalize(data) # 提取需要的目标字段,重命名为中文列名 final_df = df[[ "Family.father_name", "Family.mother_name", "Family.residence_status", "Family.pet_count" ]] final_df.columns = ["父亲姓名", "母亲姓名", "居住情况", "宠物数量"]
方法2:已生成单Family列的df后二次拆分
如果你已经执行了df = pd.DataFrame.from_dict(data)拿到了带Family字典列的表格,可以单独拆分该列后拼接:
import pandas as pd df = pd.DataFrame.from_dict(data) # 拆分Family列的字典为独立列 family_columns = pd.json_normalize(df["Family"]) # 拼接拆分后的列,筛选目标字段并重命名 final_df = pd.concat( [df.drop(columns=["Family"]), family_columns], axis=1 )[["father_name", "mother_name", "residence_status", "pet_count"]] final_df.columns = ["父亲姓名", "母亲姓名", "居住情况", "宠物数量"]
排查提示
如果运行时提示KeyError,先执行以下代码打印所有拆分后的列名,确认实际字段拼写和层级是否和预期一致:
print(pd.json_normalize(data).columns.tolist())
内容的提问来源于stack exchange,提问作者FrozenIceWinter
相关产品推荐
相关产品推荐

