Python 熊猫数据帧-获取匹配行之前/之后的第n行

Python 熊猫数据帧-获取匹配行之前/之后的第n行,python,pandas,dataframe,search,match,Python,Pandas,Dataframe,Search,Match,如何获取匹配行之前/之后的第n行 df_temp[df_temp.Date == pd.to_datetime(specific_date)] 您可以使用获取第一个匹配行的索引 idx = df_temp[df_temp.Date == pd.to_datetime(specific_date)].index[0] 然后您可以使用获取(idx-n)之前或之后(idx+n)的第n行 根据@Ruli的评论进行编辑: 如果我们想将其构建成一个健壮的解决方案,我们当然必须检查新索引idx+n是否在

如何获取匹配行之前/之后的第n行

df_temp[df_temp.Date == pd.to_datetime(specific_date)] 

您可以使用获取第一个匹配行的索引

idx = df_temp[df_temp.Date == pd.to_datetime(specific_date)].index[0]
然后您可以使用获取(
idx-n
)之前或之后(
idx+n
)的第n行

根据@Ruli的评论进行编辑:

如果我们想将其构建成一个健壮的解决方案,我们当然必须检查新索引
idx+n
是否在范围内

我们可以通过比较
0
len(df_temp)
来做到这一点

new_idx=idx+n

如果new\u idx>=0和new\u idx,如果n=5和idx为2怎么办?或者行数为10,idx为8,n=5。这种方法很好,但需要额外的检查以保持在范围内(负指数可以很好,只是从df的不正确的一面,但过高会导致崩溃)。我在编写答案时将此视为用户的职责,但在提供健壮的实现时,当然应该这样做。谢谢你的意见,@Ruli。
df_temp.iloc[idx+n]
new_idx = idx + n
if new_idx >= 0 and new_idx <= len(df_temp)-1:
    df_temp.iloc[new_idx]
else:
    print(f"Index {new_idx} is out of bounds for DataFrame of size {len(df_temp)}")