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

如何用向量化方法实现Pandas按列索引取值并生成新列?

向量化解决方案(百万级数据高效处理)

针对百万级数据,循环和apply本质都是逐行处理,效率极低,完全可以用基于Numpy的向量化操作实现,速度能提升几个数量级。

核心思路:利用Numpy的多维数组索引,直接批量定位并提取所需值,再完成四舍五入。

具体实现代码

import numpy as np
import pandas as pd

# 定义对应bestcol的数值列
value_cols = ['Val1', 'Val2', 'Val3']
# 将数值列转换为Numpy数组
value_arr = df[value_cols].values
# 把bestcol的1起始索引转为Numpy所需的0起始索引
col_indices = df['bestcol'] - 1
# 批量提取每行对应列的数值
selected_values = value_arr[np.arange(len(value_arr)), col_indices]
# 四舍五入后生成Final列
df['Final'] = np.round(selected_values, 0)

性能优势说明

  • 所有操作都是底层C语言实现的向量化运算,没有Python层面的逐行循环开销
  • 避免了apply和iloc逐行访问带来的性能损耗,百万级数据处理时间能从分钟级压缩到秒级

示例验证

用你给出的测试数据执行上述代码后,Final列结果与预期完全一致:

Val1Val2Val3bestcolFinal
1.12.13.111.0
11.122.133.1222.0
111.1222.1333.13333.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:42:52