2017-01-04 8 views
0

私は単純なパンダのデータフレームを持っています。pandasデータフレームに `または` bブール値を問い合わせていますか?

import pandas as pd  
x = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30] 
y = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600] 
users =['mark', 'mark', 'mark', 'rachel', 'rachel', 'rachel', 'jeff', 'jeff', 'jeff', 'lauren', 'lauren', 'lauren'] 

df = pd.DataFrame(dict(x=x, y=y, users=users) 

データフレームの特定の行を維持したいと考えています。すべての "rachels"と "jeffs"としましょう。私はdf.queryを試してみました:

df=df.query('users=="rachel"' or 'users=="jeff"') 

結果のみusers=="rachel"とデータフレームです。クエリを組み合わせる方法はありますか?

答えて

4

標準的な方法は、ビット単位または演算子|を使用することです。理由を明確に説明するには、this answerをチェックすることをおすすめします。また、Pythonの評価の順序のために、各条件のまわりのかっこを使用する必要があります。

df[(df.users == 'rachel') | (df.users == 'jeff')] 
    users x y 
3 rachel 30 200 
4 rachel 5 300 
5 rachel 10 300 
6 jeff 20 400 
7 jeff 30 400 
8 jeff 5 500 

クエリを使用して、あなたはまだだけや演算子を使用することができます。

df.query("users=='rachel' | users=='jeff'") 
    users x y 
3 rachel 30 200 
4 rachel 5 300 
5 rachel 10 300 
6 jeff 20 400 
7 jeff 30 400 
8 jeff 5 500 
+0

ナイス!できるだけ早く回答をマークします!ありがとうございました! – Rachel

+0

心配はいりません。 @ EdChumのコメントも簡単な解決策です。 –

+0

名前がrachelまたはjeffであり、故郷がシカゴだった場合のみ、結果のみを表示するロジックを作成しますか?だから、シカゴからのすべてのレイチェルと、シカゴからのすべてのジェフが、シカゴからはスティープしていないか、アトランタからのレイチェルは出ていない。あなたは "users == 'rachel' | users == 'jeff'&hometown == 'chicago'"を使用することができますか、またはANDはjeffsにのみ適用され、 "&hometown == 'Chicago' ORの両側に? – Korzak

1

別の方法がある:

df=df.query('users=="rachel"').append(df.query('users=="jeff"')) 
関連する問題