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

如何在Pandas中提取指定索引的前一个位置的列值?

解决方案

有几种简洁的方式可以实现你的需求,以下是具体方法:

方法1:基于已有索引列表处理

既然你已经得到了目标索引列表x,直接对每个索引减1生成前一个位置的索引列表,再用iloc提取对应列的值:

# 生成每个目标索引的前一个位置索引
prev_indices = [idx - 1 for idx in x]
# 提取第4列对应的值(注:iloc的列索引从0开始,这里的4对应你所说的"第4列")
Timestamp = df.iloc[prev_indices, 4]

方法2:更贴合Pandas风格的写法

跳过转列表的步骤,直接对筛选出的索引做运算,效率更高:

# 直接获取符合条件的索引,无需转成列表
target_indices = df.loc[df['Violation_Diff'] == 1].index
# 计算前一个索引并提取第4列值
Timestamp = df.iloc[target_indices - 1, 4]

注意边界情况

如果筛选出的索引包含0,idx - 1会得到-1,而iloc[-1]会取DataFrame的最后一行,这可能不是你想要的结果。可以提前过滤掉索引为0的情况:

target_indices = df.loc[df['Violation_Diff'] == 1].index
# 只保留大于0的索引,避免出现-1的情况
valid_indices = target_indices[target_indices > 0]
Timestamp = df.iloc[valid_indices - 1, 4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:50:33