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

如何不使用iterrows高效实现pandas DataFrame列值按字典映射替换

高效实现方案

直接用pandas原生的map矢量化方法即可,完全不需要逐行遍历,1万条数据毫秒级就能完成,性能比iterrows高几十倍。

优化后代码

# 先将Subtest列转为字符串,再用字典映射,插入到第4位
df.insert(4, 'ctqparam', df['Subtest'].astype(str).map(ctqparam_dict))
# 删除原Subtest列
df = df.drop(columns=['Subtest'])

可选边界处理

如果需要对字典中未匹配到的值做处理,可以加fillna:

  • 保留原值:
df.insert(4, 'ctqparam', df['Subtest'].astype(str).map(ctqparam_dict).fillna(df['Subtest']))
  • 填充指定默认值(比如空字符串、未匹配等):
df.insert(4, 'ctqparam', df['Subtest'].astype(str).map(ctqparam_dict).fillna(''))

性能优势说明

  • iterrows逐行遍历会在Python层循环,每次都要生成行对象,额外开销极高。
  • map是pandas底层C实现的矢量化操作,没有Python层循环开销,不管是小数据量还是几十万以上的大数据量,性能都远优于手动遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:24:00