如何高效将嵌套字典列表转为pandas DataFrame?附JSON解析示例
解析嵌套JSON到Pandas DataFrame并提取唯一键值对
没问题,我来帮你搞定这个嵌套JSON解析成Pandas DataFrame的需求!直接上可运行的代码,再给你拆解下逻辑:
import pandas as pd # 你的原始JSON数据 json_data = { "hits": { "hits": [ { "_source": { "TYPES": [ {"_ID": 130, "_NM": "ARB-130"}, {"_ID": 131, "_NM": "ARB-131"}, {"_ID": 132, "_NM": "ARB-132"} ] } }, { "_source": { "TYPES": [ {"_ID": 902, "_NM": "ARB-902"}, {"_ID": 903, "_NM": "ARB-903"}, {"_ID": 904, "_NM": "ARB-904"} ] } } ] } } # 提取所有TYPES列表并合并成一个大列表 all_types = [item for hit in json_data["hits"]["hits"] for item in hit["_source"]["TYPES"]] # 转成DataFrame并去重(确保_ID和_NM的唯一组合) df = pd.DataFrame(all_types).drop_duplicates(subset=["_ID", "_NM"], keep="first").reset_index(drop=True) print(df)
代码逻辑拆解:
- 提取嵌套数据:用嵌套列表推导式,先遍历外层的
hits["hits"]每个元素,再取出每个元素里_source下的TYPES列表,把所有小列表合并成一个包含所有键值对的大列表。 - 转成DataFrame:直接用
pd.DataFrame()把合并后的列表转成表格。 - 去重处理:用
drop_duplicates()指定_ID和_NM作为去重依据,保留第一个出现的条目,最后用reset_index()重置索引让它从0开始连续编号。
运行后你就能得到你想要的格式:
_ID _NM 0 130 ARB-130 1 131 ARB-131 2 132 ARB-132 3 902 ARB-902 4 903 ARB-903 5 904 ARB-904
内容的提问来源于stack exchange,提问作者Fizi
相关产品推荐
相关产品推荐

