我有这个数据框,其中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
有没有一种简单的方法可以实现,而无需克隆整个数据集?
答案 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查找相应的值。