title: Delete rows pandas Dataframe based on index (multiple criteria) (Python 3.5.1)
body: <p>Suppose I have a Pandas DataFrame with MultiIndex on rows. How can I delete rows based on the value of one of the levels of the index based on multiple criteria?</p>
  
  <p>For example, suppose I have</p>
  
  <pre><code>import pandas as pd
  
  df = {'population': [100, 200, 300, 400, 500, 600, 700, 800]}
  arrays = [['NJ', 'NJ', 'NY', 'NY', 'CA', 'CA', 'NV', 'NV'],
            ['A', 'B', None, 'D', 'E', 'F', None, 'G']]
  tuples = list(zip(*arrays))
  index = pd.MultiIndex.from_tuples(tuples, names=['state', 'county'])
  
  df = pd.DataFrame(df, index=index)
  
                     population
  state   county  
  NJ        A          100
            B          200
  NY        NaN        300
            D          400
  CA        E          500
            F          600
  NV        NaN        700
            G          800   
  </code></pre>
  
  <p>I want to delete all rows where the <code>county</code> level of the index is NaN and also delete it when it is equal to 'D' and 'G'. In other words, I want to end up with a DataFrame</p>
  
  <pre><code>                   population
  state   county  
  NJ        A          100
            B          200
            D          400
  CA        E          500
            F          600  
  </code></pre>
  
  <p>So the following sort of works:</p>
  
  <pre><code>df = df.iloc[df.index.get_level_values('county') != 'D']
  df = df.iloc[df.index.get_level_values('county') != 'G']
  </code></pre>
  
  <p>But the problem is that in my real use case there is several of these criteria. Also, I can't seem to find a way to delete NaN's using this method.</p>
  
  <p>Thanks!</p>