title: Replace a column value for a select set of rows
body: <p>I have a pandas DataFrame for which I'd like to replace one column value for a small subset of rows. E.g. given:</p>
  <pre><code>in_dict = [{ 'what': 'abc', 'num': 42}, {'what': 'abc', 'num': 43}, {'what': 'def', 'num': 99}]
  
  df = pd.DataFrame.from_records(in_dict)
  </code></pre>
  <p>which looks like:</p>
  <pre><code>  what  num
  0  abc   42
  1  abc   43
  2  def   99
  </code></pre>
  <p>Using</p>
  <pre><code>lookup = {'abc': 'xyz'}
  </code></pre>
  <p>I want to end up with:</p>
  <pre><code>  what  num
  0  xyz   42
  1  xyz   43
  2  def   99
  </code></pre>
  <p>I can use map, but then I get NaN's for entries not in the lookup table:</p>
  <pre><code>&gt;&gt;&gt; df['what'] = df['what'].map(lookup)
  &gt;&gt;&gt; df
    what  num
  0  xyz   42
  1  xyz   43
  2  NaN   99
  </code></pre>
  <p>My actual DataFrame is about 100k items, of which &lt;100 need the update.</p>
  <p>What is the most efficient (and ideally pandas-idiomatic) approach here?</p>