已知DataFrame指定索引,如何获取上一行的对应数据
Pandas获取指定索引对应元素的上一个值的实现方法
要获取索引2021-11-26的上一个元素,有两种常用的稳定实现方式:
方法1:索引位置偏移法(通用所有场景)
先通过get_loc拿到指定索引的位置,位置减1后用iloc取值即可:
import pandas as pd df1 = pd.DataFrame({'A':[10,20,30]}, index=['2021-11-24','2021-11-25','2021-11-26']) current_idx = '2021-11-26' # 获取当前索引的整数位置 current_pos = df1.index.get_loc(current_idx) # 偏移-1取上一个元素 prev_val = df1['A'].iloc[current_pos - 1] print(prev_val) # 输出结果:20
注意:使用前需判断
current_pos > 0,避免当前索引是首行时出现下标越界报错;如果存在重复索引,get_loc会返回布尔数组,需要先筛选出目标位置再做偏移。
方法2:shift偏移法(适合时间序列/无需额外处理越界的场景)
将目标列整体向下偏移1行,此时原索引对应的值就是上一行的元素:
prev_val = df1['A'].shift(1).loc['2021-11-26'] print(prev_val) # 输出结果:20
如果当前索引是首行,该方法会直接返回NaN,不会触发报错,适合批量处理多索引取值的场景。
内容的提问来源于stack exchange,提问作者Soon
相关产品推荐
相关产品推荐

