如何实现Numpy数组索引匹配pandas DataFrame列值后对应数值相乘
匹配相乘实现方案
核心逻辑
利用numpy的整数数组索引特性,直接将DataFrame的v_index列作为下标批量提取numpy数组的对应系数,再与values列做向量化乘法即可完成匹配计算,全程无循环,执行效率极高。
完整可运行代码
import pandas as pd import numpy as np # 构造示例DataFrame data = {'v_index': [0, 1, 2, 3, 4, 0, 4, 3], 'values': [5, 5, 10, 10, 20,20,10,10]} df = pd.DataFrame(data) # 待匹配numpy数组 arr = np.array([1,3,5,7,9]) # 核心计算逻辑 df['values'] = df['values'] * arr[df['v_index']] # 输出结果验证 print(df)
运行结果
执行代码后得到的结果与期望完全一致:
| 行号 | v_index | values |
|---|---|---|
| 0 | 0 | 5 |
| 1 | 1 | 15 |
| 2 | 2 | 50 |
| 3 | 3 | 70 |
| 4 | 4 | 180 |
| 5 | 0 | 20 |
| 6 | 4 | 90 |
| 7 | 3 | 70 |
注意事项
- 需确保numpy数组的长度大于等于
v_index列的最大值+1,避免出现索引越界报错 - 即使
v_index取值不连续,该方案依然有效,只要对应下标在numpy数组中存在即可
内容的提问来源于stack exchange,提问作者Yun Hyunsoo
相关产品推荐
相关产品推荐

