代码之家  ›  专栏  ›  技术社区  ›  Shamoon

如何选择数据帧中索引行前面的n行?

  •  1
  • Shamoon  · 技术社区  · 5 年前

    我有一个 DataFrame 我试图选择一行(给定一个特定的索引)和 n 前面的行。

    我试过这样的方法:

    last_10 = self.market_data.iloc[index:-10]
    

    index 直到数据帧的末尾减去10行。

    我希望返回 指数

    2 回复  |  直到 5 年前
        1
  •  1
  •   jezrael    5 年前

    如果通用索引像 DatetimeIndex 使用 DataFrame.iloc 具有 Index.get_loc val :

    print (market_data)
                val
    Date           
    1900-01-01  2.0
    1900-01-02  3.0
    1900-01-03  5.1
    1900-01-04  5.0
    1900-01-05  6.0
    1900-01-06  7.0
    1900-01-07  3.0
    
    n = 3
    val = '1900-01-04'
    pos = market_data.index.get_loc(val)
    last_10 = market_data.iloc[pos-n+1:pos+1]
    print (last_10)
                val
    Date           
    1900-01-02  3.0
    1900-01-03  5.1
    1900-01-04  5.0
    

    如果 RangeIndex -在索引之前获取3个值 4 DataFrame.loc

    print (market_data)
             Date  val
    0  1900-01-01  2.0
    1  1900-01-02  3.0
    2  1900-01-03  5.1
    3  1900-01-04  5.0
    4  1900-01-05  6.0
    5  1900-01-06  7.0
    6  1900-01-07  3.0
    
    n = 3
    val = 4
    last_10 = market_data.loc[val-n+1:val]
    print (last_10)
             Date  val
    2  1900-01-03  5.1
    3  1900-01-04  5.0
    4  1900-01-05  6.0
    
        2
  •  2
  •   Nathaniel    5 年前

    使用此选项:

    n = 10
    last_10 = self.market_data.iloc[index-n:index+1]
    

    在对数组进行切片时,Python会返回直到最后一个索引为止的所有内容,因此需要添加一个索引来包含它。