2017-04-27 57 views
0

我有这样的数据框。如果满足某个条件,我想选取上面的行。例如,如果数字> 2,那么我想选择约翰,理查德和保罗的行。即数字最多可达三个的行。我也想挑选迈尔斯之上的5排。即Myers,Jessica,Ashton,Whiley,Jason。在符合大熊猫条件的行上方拾取行

name  number 
    Adrian  1 
    Peter  2 
    John  1 
    Richard 2 
    Paul  3 
    Ashley  1 
    Winchester 0 
    Jason  1 
    Whiley  2 
    Ashton  3 
    Jessica 4 
    myers  5 

输出可能看起来像这样

name number 
John  1 
Richard 2 
Paul  3 
Jason  1 
Whiley  2 
Ashton  3 
Jessica 4 
myers  5 
+0

你能详细说明你的输出看起来如何吗? – Shubham

+0

@ CodeGeek123好吧,你说的数字> 2是静态的还是动态的?我的意思是根据你的定义你的条件结果应该改变? – Shubham

+0

是的,这是正确的。例如,数字可以是> 3或4等。结果应该相应改变 – CodeGeek123

回答

3

这笨拙的工作原理:

def get_number(n): 
    position = df[df['number']==n].index[0] 
    find = range(position - (n-1), position + 1) 
    return df.loc[find] 

print get_number(3) 
+0

感谢Zipa。但是,对于完成的数据集有一个问题,其中包含第2行的索引错误:IndexError:索引0超出了轴0的大小0 – CodeGeek123

2
def Select_no(n): 
    position = df[df['number']==n].index[0] 
    find = range(position - (n-1), position + 1) 
    return df.loc[find] 

df1 = Select_no(3) 
df2 = df[7:] 
df1 = df1.append(df2) 

你也可以做df1.reset_index(inplace=True),如果你希望你的索引从0开始。 enter image description here

+0

您是否认真复制了我的答案? – zipa