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

如何根据随机numpy数组替换DataFrame列中匹配原数组的值

Pandas指定列按NumPy数组索引映射替换值实现

已知条件

现有两个等长的int64类型NumPy数组:

  • 匹配源数组arraya:存储所有需要被替换的整数值
arraya= array([550045586,   4926233,  29153854, ..., 550008337,  29387809,
          516004], dtype=int64)
  • 映射目标数组arrayrandom:和arraya索引一一对应,存储对应位置的替换值
arrayrandom = array([11000911017,    98523957,   583076377, ..., 11000166037,
         587755477,    10319377], dtype=int64)

替换规则

对DataFrame的df['Example']列执行替换:

  • 若行值存在于arraya中,替换为arrayrandom对应索引位置的取值
  • 若行值不存在于arraya中,保留原始值

替换示例:原值550045586、550008337在arraya中,替换后分别为11000911017、11000166037;原值111不在arraya中,替换后保持111不变。

实现代码

直接构建值映射关系后调用replace方法即可,该方法会自动保留无匹配项的原值,不需要额外写分支判断:

# 构建「待替换值:目标替换值」的映射字典
value_mapper = dict(zip(arraya, arrayrandom))

# 对指定列执行替换
df['Example'] = df['Example'].replace(value_mapper)

注意事项

  • 如果arraya中存在重复值,上述代码默认取重复值最后一次出现对应的arrayrandom值作为映射结果,若需要取首次出现的映射值,可以提前对两个数组做对齐去重处理
  • 该实现为pandas原生向量化操作,相比逐行循环判断的写法性能提升1~2个数量级,适配百万级以上行数的DataFrame场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:06:52