 <p>The best way to deal with this is by indexing into the rows using a Boolean series as you would in R.</p> <p>Using your df as an example,</p> <pre><code>In [5]: df.Col1 == "what" Out[5]: 0 True 1 False 2 False 3 False 4 False 5 False 6 False Name: Col1, dtype: bool In [6]: df[df.Col1 == "what"] Out[6]: Col1 Col2 Col3 Col4 0 what the 0 0 </code></pre> <p>Now we combine this with the pandas isin function.</p> <pre><code>In [8]: df[df.Col1.isin(["men","rocks","mountains"])] Out[8]: Col1 Col2 Col3 Col4 2 men of 2 16 4 rocks lips 4 32 6 mountains history. 6 48 </code></pre> <p>To filter on multiple columns we can chain them together with &amp; and | operators like so.</p> <pre><code>In [10]: df[df.Col1.isin(["men","rocks","mountains"]) | df.Col2.isin(["lips","your"])] Out[10]: Col1 Col2 Col3 Col4 2 men of 2 16 3 to your 3 24 4 rocks lips 4 32 6 mountains history. 6 48 In [11]: df[df.Col1.isin(["men","rocks","mountains"]) &amp; df.Col2.isin(["lips","your"])] Out[11]: Col1 Col2 Col3 Col4 4 rocks lips 4 32 </code></pre>