Python 大熊猫的相对行选择?

Python 大熊猫的相对行选择?,python,pandas,Python,Pandas,如果熊猫符合特定条件,是否可以选择特定行之前/之后的5行 例如,是否可以从第19行开始,然后选择b为真的前五行(从而选择16、16、10、7和4)。我称之为“相对”位置。(有更好的术语吗?我可以在哪里读到这种类型的查找?) 试试这个: In [31]: df.ix[(df.b) & (df.index < df[df.a == 19].index[0])].tail(5) Out[31]: a b 2 4 True 3 7 True 5 10 Tru

如果熊猫符合特定条件,是否可以选择特定行之前/之后的5行

例如,是否可以从第19行开始,然后选择b为真的前五行(从而选择16、16、10、7和4)。我称之为“相对”位置。(有更好的术语吗?我可以在哪里读到这种类型的查找?)

试试这个:

In [31]: df.ix[(df.b) & (df.index < df[df.a == 19].index[0])].tail(5)
Out[31]:
    a     b
2   4  True
3   7  True
5  10  True
6  13  True
7  16  True
现在我们可以列出
b为真且索引小于9的所有元素:

In [30]: df.ix[(df.b) & (df.index <9)].tail(5)
Out[30]:
    a     b
2   4  True
3   7  True
5  10  True
6  13  True
7  16  True

[30]中的
df.ix[(df.b)&(df.index你能编辑你的df吗?因为它看起来有点奇怪,第16行是列还是索引值?你是想选择前5行中与条件匹配的行?还是在前5行中,只选择与条件匹配的行?@EdChum I已重新格式化it@northsideknight好地方。我添加了更多细节:我希望从19开始,然后选择16、13、10、7和4.在列表理解中,如果row.b==True,你可以对行中的行做[b:[index][:5]但是我没有熊猫方面的经验,也许这是朝着正确的方向迈出的一步?这基本上达到了预期的效果,但速度确实很慢。有没有办法加快速度?
In [32]: df[df.a == 19].index[0]
Out[32]: 9
In [30]: df.ix[(df.b) & (df.index <9)].tail(5)
Out[30]:
    a     b
2   4  True
3   7  True
5  10  True
6  13  True
7  16  True
In [33]: df.ix[(df.b) & (df.index < df[df.a == 19].index[0])].tail(5)
Out[33]:
    a     b
2   4  True
3   7  True
5  10  True
6  13  True
7  16  True
In [103]: idx19 = df[df.a == 19].index[0]

In [104]: idx19
Out[104]: 9

In [107]: %timeit df.ix[(df.b) & (df.index < df[df.a == 19].index[0])].tail(5)
1000 loops, best of 3: 973 µs per loop

In [108]: %timeit df.ix[(df.b) & (df.index < idx19)].tail(5)
1000 loops, best of 3: 564 µs per loop