2016-08-02 6 views
1

が列xkykDataFrameを考えると一致した複数の行のインデックスを取得し、我々はDataFrameのインデックスを検索するものでxkyk ==0の値。Pythonのパンダ:列が特定の値

は、私はそれだけで一つの列のために完璧に罰金働い持っていますが、私はそれは私が同時にxkykのためにそれを行うだろうどのように両方の

b = (df[df['xk'] ==0]).index.tolist() 

のために働いて得るカント。

答えて

2

私はすべての値がallにより比較サブセット['xk', 'yk']Trueあるかどうかをチェックすることができると思う:

b = df[(df[['xk', 'yk']] == 0).all(1)].index.tolist() 

別の解決策は、&と第二の条件を追加します:

b = (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist()) 

サンプル:

df = pd.DataFrame({'xk':[0,2,3], 
        'yk':[0,5,0], 
        'aa':[0,1,0]}) 

print (df) 
    aa xk yk 
0 0 0 0 
1 1 2 5 
2 0 3 0 

b = df[(df[['xk', 'yk']] == 0).all(1)].index.tolist() 
print (b) 
[0] 

b1 = (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist()) 
print (b1) 
[0] 

第2の解決策は速いです:完全に働いた

#length of df = 3k 
df = pd.concat([df]*1000).reset_index(drop=True) 

In [294]: %timeit df[(df[['xk', 'yk']] == 0).all(1)].index.tolist() 
1000 loops, best of 3: 1.21 ms per loop 

In [295]: %timeit (df[(df['xk'] == 0) & (df['yk'] == 0)].index.tolist()) 
1000 loops, best of 3: 828 µs per loop 
+0

おかげで、私はちょうど特定の行のインデックスの代わりに、私は理解している場合を確認していないすべてのインデックス – WGP

+0

のリストを返すを返すしたい場合について。 'df = pd.DataFrame({'xk':[0,2,0]、 'yk':[0,5,0]、 'aa':[0,1,0]}) を使用する場合は、 (df ['xk'] == 0)&(df ['yk'] == 0)]) 'を取得します。あなたはリターンが必要ですか?位置による第1の指標値または第2の指標値? – jezrael

関連する問題