2016-03-30 7 views
1

DataFrameがあり、ある列に特定の値があり、上の行が別の列に特定の値を持つ行を選択したいとします。どのようにforループなしでこれを行うのですか?例えば複数行の値に基づいてDataFrameの行を選択します。

私はその行に df.one1に等しく、上記行 df.two4に等しい行を検索したいので、例えば行番号4のあるだろう
df = pd.DataFrame({'one': [1,2,3,4,1,2,3,4], 'two': [1,2,3,4,5,6,7,8]}) 

[1,5]

答えて

2

あなたはboolean indexingshiftを試すことができます。

print df 
    one two 
0 1 1 
1 2 2 
2 3 3 
3 4 4 
4 1 5 
5 2 6 
6 3 7 
7 4 8 

print (df.one == 1) & (df.two.shift() == 4) 
0 False 
1 False 
2 False 
3 False 
4  True 
5 False 
6 False 
7 False 
dtype: bool 

print df[(df.one == 1) & (df.two.shift() == 4)] 
    one two 
4 1 5