如何在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
相关产品推荐
相关产品推荐

