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

Python中如何匹配DataFrame行号与列值 解决索引越界问题

报错原因

local_max仅包含1032个元素,你的循环逻辑中用行号i直接作为下标取local_max[i],当i大于等于1032时就会触发索引越界错误。同时你的判断逻辑本身也不符合需求:你要匹配的是「行号是否在local_max列表内」,而非「行号等于local_max对应下标的值」。

向量化实现方案(推荐)

用numpy+pandas的向量化操作实现,时间复杂度低,无需循环:

import numpy as np

# 初始化全为0的等长数组
max_array = np.zeros(len(df), dtype=df.x.dtype)
# 给local_max指定的行位置赋值对应df.x的值
max_array[local_max] = df.x.loc[local_max].to_numpy()

如果需要输出Python列表格式,末尾添加max_array = max_array.tolist()即可。

原循环写法修复(非推荐,性能较差)

如果要保留循环写法,需要调整判断逻辑,同时把local_max转成集合提升存在判断的效率:

max_array = []
local_max_set = set(local_max)
for i in range(len(df)):
    max_array.append(df.x[i] if i in local_max_set else 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:24:01