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

如何不用for循环基于另一个dataframe列更新当前dataframe对应列

无循环实现方案

两种向量化实现方式,性能远高于iterrows遍历,数据量越大优势越明显:

方法1:映射匹配法

将df2转为id到val的映射关系,匹配不到的默认填充1(除以1不改变原值),直接做逐元素运算:

# 构造id到val的映射Series
val_map = df2.set_index('id')['val']
# 匹配id并做除法,未匹配值保持不变
df1['val'] = df1['val'] / df1['id'].map(val_map).fillna(1)

方法2:索引对齐法

利用pandas索引自动对齐的特性实现匹配运算:

# 临时将id设为索引
df1_idx = df1.set_index('id')
df2_idx = df2.set_index('id')
# 按索引匹配做除法,未匹配到的行默认除以1
df1_idx['val'] = df1_idx['val'].div(df2_idx['val'], fill_value=1)
# 恢复id为普通列
df1 = df1_idx.reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:57:04