【问题标题】:Pandas Dataframe - get Nth row before/after matched rowPandas Dataframe - 在匹配行之前/之后获取第 N 行
【发布时间】:2020-11-12 20:47:29
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas dataframe search match


    【解决方案1】:

    你可以得到第一个匹配行的索引

    idx = df_temp[df_temp.Date == pd.to_datetime(specific_date)].index[0]
    

    然后你可以在(idx-n)之前或之后(idx+n)获取第n行

    df_temp.iloc[idx+n]
    

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

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

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

    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)}")
    

    【讨论】:

    • 如果 n=5 且 idx 为 2 会怎样?或行数为 10,idx 为 8,n=5。这种方法很好,但需要额外检查以保持在范围内(负索引可以很好,只是从 df 的错误一侧,但太高会导致崩溃)
    • 当我写答案时,我认为这是用户的责任,但在提供强大的实现时当然应该这样做。谢谢你的意见,@Ruli。
    猜你喜欢
    • 2018-02-17
    • 2019-11-23
    • 2021-09-26
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2014-09-04
    相关资源
    最近更新 更多