如何高效将嵌套字典列表转换为Pandas DataFrame(超50万条数据)
优化大型嵌套列表转DataFrame的速度问题
原始数据格式
results = [ {'Parcel': {'AIN': '2004001003','Longitude': '-118.620668807','Latitude':'34.2202197879'}}, {'Parcel': {'AIN': '2004001004','Longitude': '-118.620668303','Latitude': '34.2200390973'}} ]
需求
将上述嵌套列表转换为包含AIN、Longitude、Latitude三列的DataFrame,原循环拼接方法在50万条数据场景下速度极慢,需优化。
原代码低效原因
原代码通过循环调用pd.concat逐行拼接DataFrame,每次拼接都会创建新的DataFrame对象,伴随频繁的内存分配与数据拷贝,数据量越大(如50万条),性能下降越明显,时间复杂度为O(n²)。
优化方案
直接一次性整理数据后构造DataFrame,仅做一次内存分配,时间复杂度为O(n),效率提升显著:
方案1:提取所有Parcel字典后构造
import pandas as pd # 用列表推导式批量提取每个元素中的Parcel字典 parcel_list = [item['Parcel'] for item in results] # 一次性生成DataFrame df = pd.DataFrame(parcel_list)
方案2:指定目标列(可选)
如果需要严格保留指定的三列顺序或过滤其他字段,可明确指定columns参数:
df = pd.DataFrame(parcel_list, columns=['AIN', 'Longitude', 'Latitude'])
效果验证
该方法处理50万条数据时,耗时仅为原循环拼接方法的几十分之一,完全能满足大规模数据的转换需求。
内容的提问来源于stack exchange,提问作者sucksatmath
相关产品推荐
相关产品推荐

