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

如何根据pandas DataFrame的索引列与值列修改numpy零数组

高效实现方法

直接用numpy花式索引做向量化赋值即可,无Python层循环,是性能最优的方案。

完整示例代码

import pandas as pd
import numpy as np

# 构造题述的DataFrame
df = pd.DataFrame({'x': [2, 3, 5], 'y': [4, 1, 9]})
# 初始化长度为6的全零数组
arr = np.zeros(6, dtype=int)

# 核心赋值操作
arr[df['x'].to_numpy()] = df['y'].to_numpy()

执行后arr的输出为:

array([0, 0, 4, 1, 0, 9])

注意事项

  • 该实现全程走numpy底层向量化逻辑,执行效率远高于iterrows逐行遍历、apply逐值映射等写法,数据规模越大性能差距越明显。
  • 调用.to_numpy()将pandas Series转为原生numpy数组,可以跳过pandas的索引对齐检查,赋值速度更快;如果数据量小,直接写arr[df['x']] = df['y']也能得到正确结果。
  • 你已经确认x列值唯一、且所有x值都在目标数组的索引范围内(本题为0-5),不会出现索引越界、同索引重复赋值覆盖的问题,可直接复用该逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:45:50