将API返回嵌套字典列表转pandas DataFrame仅得1行的问题咨询
问题原因
你丢失数据的核心原因是误用了字典的update()方法。Python字典的键具备唯一性,每次执行res.update(d)时,如果当前遍历到的字典d中的键已经在res中存在,会直接覆盖res中对应键的旧值。整个循环执行完后,res只会保留devices列表最后一个字典的内容,所以后续做扁平化操作只能得到1行数据。
你原本的字典列表转单个字典的逻辑本身就不符合需求:每个字典对应DataFrame的一行,你将1000个字典合并为单个字典,自然只能得到1行结果。
正确实现方案
你不需要手动循环处理字典列表,直接调用pandas自带的嵌套结构解析方法即可完成扁平化+生成DataFrame的需求:
import pandas as pd from pandas import json_normalize # 直接对包含1000个字典的devices列表做扁平化处理 df = json_normalize(devices)
如果需要把CatalogNumbers这类嵌套列表字段也展开成多行,可以添加对应参数:
df = json_normalize( devices, record_path='CatalogNumbers', meta=['AlternativeDeviceNames', 'BrandName', ['Company', 'CompanyId'], ['Company', 'CompanyName']], errors='ignore' )
内容的提问来源于stack exchange,提问作者lu-mat
相关产品推荐
相关产品推荐

