【问题标题】:Select N rows above and below a specific row in pandas在pandas中选择特定行上方和下方的N行
【发布时间】:2018-07-15 18:01:54
【问题描述】:

我有这个数据框,我想在特定列的前后选择 10 行。我已经达到了这一点,但我想知道如何在 lambda python 表达式中使其更优雅,因为我需要在循环中运行 10000 次。

import pandas as pd

df = pd.DataFrame(data=np.random.rand(90),
     index=pd.date_range('2015-01-01','2015-03-31'),columns=['A'])

我已经解决了这个问题:

前后10次观察:

df.loc['2015-01-17':].head(11)[1:11].transpose()   ! before
df.loc[:'2015-01-17'].tail(11)[0:10].transpose()   ! after

那么,我怎样才能让它在一个带有 lambda 表达式的循环中,并且不仅有一个index,而且有两个indexes

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    使用index.get_loc 非常简单。获取标签的索引,并相应地切片。

    idx = df.index.get_loc('2015-01-17')
    df.iloc[idx - 10 : idx + 10]
    
                       A
    2015-01-07  0.262086
    2015-01-08  0.836742
    2015-01-09  0.094763
    2015-01-10  0.133500
    2015-01-11  0.285372
    2015-01-12  0.338112
    2015-01-13  0.451852
    2015-01-14  0.163001
    2015-01-15  0.247186
    2015-01-16  0.227053
    2015-01-17  0.837647
    2015-01-18  0.918334
    2015-01-19  0.514731
    2015-01-20  0.207688
    2015-01-21  0.700314
    2015-01-22  0.363784
    2015-01-23  0.811346
    2015-01-24  0.079030
    2015-01-25  0.051900
    2015-01-26  0.520310
    

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多