You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遍历DataFrame嵌套字典提取指定字段的函数优化问询

嵌套JSON字段提取函数优化方案

原函数存在以下问题:

  • 用iterrows()遍历DataFrame效率低下,大数据量场景下性能差
  • 变量名不一致:定义了store_id列表,但代码里误写为store.append(store_val),会触发未定义变量错误
  • 遍历字典所有键值对来匹配目标字段,冗余且低效,可直接通过键名取值
  • 缺少异常处理,若某行数据缺失store-boundary-dsp/estimates路径,会直接抛出KeyError中断执行
  • 嵌套循环层级过多,代码可读性差

优化后的代码

import pandas as pd

def traverse_dsp(data_frame, column):
    providers = []
    store_ids = []
    
    for resp in data_frame[column]:
        # 处理路径不存在的情况,避免KeyError
        try:
            estimates = resp.get('store-boundary-dsp', {}).get('estimates', [])
            for item in estimates:
                # 直接通过键名取值,默认空值避免字段缺失报错
                store_id = item.get('storeExternalId')
                provider = item.get('provider')
                if store_id is not None:
                    store_ids.append(store_id)
                if provider is not None:
                    providers.append(provider)
        except Exception as e:
            # 可根据需求调整异常处理逻辑,比如记录错误行
            print(f"处理数据时出错: {str(e)}")
            continue
    
    return providers, store_ids

优化说明

  • 直接遍历DataFrame的列值,替代iterrows(),提升遍历效率
  • 使用dict.get()方法安全取值,同时设置默认值,避免路径或字段缺失导致的报错
  • 移除冗余的键值对遍历逻辑,直接通过键名获取目标字段,代码更简洁高效
  • 增加异常捕获,保证函数在部分数据格式异常时仍能继续执行
  • 修正变量名不一致的错误,统一使用store_ids和providers命名,提升可读性

内容的提问来源于stack exchange,提问作者lifo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:10:08