从.loc获取上一行

时间:2019-05-22 00:17:07

标签: python pandas

我有这个数据框,其中rm -rf .git 被用作索引。

date

给定一个任意日期,我想检索在该行之前或之后 close date 1999-11-18 44.00 1999-11-19 40.38 1999-11-22 44.00 1999-11-23 40.25 1999-11-24 41.06 处的行。

例如:

n

显然df.loc["1999-11-22"] # Gives third row df.loc["1999-11-22"].previous_row(-2) # Should give row 1999-11-18 不存在。我尝试使用previous_row,但似乎不起作用:shift(-2)保持不变,而date变成close

NaN

有没有一种简单的方法可以实现,而无需克隆整个数据集?

3 个答案:

答案 0 :(得分:4)

您可以使用index.get_loc

In [11]: df.index.get_loc("1999-11-22")
Out[11]: 2

In [12]: df.iloc[df.index.get_loc("1999-11-22") - 2]
Out[12]:
close    44.0
Name: 1999-11-18, dtype: float64

答案 1 :(得分:2)

使用shift

df.shift(2)[df.index=='1999-11-22']
Out[242]: 
            close
date             
1999-11-22   44.0

答案 2 :(得分:1)

我将转换索引查找,以找到其在DataFrame索引中的位置索引,然后计算该位置索引的偏移量并使用位置索引API iloc查找相应的值。