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

如何基于Pandas查询条件创建新列 优化百万级数据处理性能

最优向量化解决方案

直接使用 pandas 内置的 map 方法实现,全程为底层C实现的矢量化操作,时间复杂度为O(N),120万条数据通常可在毫秒级完成处理,完全避免Python层逐行循环的开销。

实现步骤

  • 第一步:构建标题到页面ID的映射字典,一次性完成全量索引构建
# 构造 {Title: Pgid} 的映射表
title_pgid_map = df.set_index('Title')['Pgid'].to_dict()
  • 第二步:直接用映射表匹配Title_to对应的Pgid,赋值给新列
df['Pgid_to'] = df['Title_to'].map(title_pgid_map)

方案说明

  • 对于Title_to为NaN的行,map会自动返回NaN,符合无重定向时的取值要求
  • 如果存在Title_to的值不在现有Title列表中的情况,也会自动返回NaN,可根据业务需求后续对这部分数据单独处理
  • 相比apply逐行查询的O(N²)复杂度,该方案仅需两次全量遍历,性能提升可达上千倍
备选方案:左连接实现

如果需要保留更多匹配过程的中间信息,也可以用左连接实现,性能和map方案接近:

# 提取标题和Pgid的映射子表
pgid_ref = df[['Title', 'Pgid']].rename(columns={'Title': 'Title_to', 'Pgid': 'Pgid_to'})
# 左连接匹配
df = df.merge(pgid_ref, on='Title_to', how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:09