title: pandas 'DataFrame' object has no attribute 'map'
body: <p>I have two df - df_a and df_b,</p>
  
  <pre><code># df_a
  number    cur    code
  1000      USD    700
  2000      USD    800
  3000      USD    900
  
  # df_b
  number    amount    deletion code
  1000      0.0       L        700
  1000      10.0      X        700
  1000      10.0      X        700
  2000      20.0      X        800
  2000      20.0      X        800
  3000      0.0       L        900
  3000      0.0       L        900
  </code></pre>
  
  <p>I want to left merge <code>df_a</code> with <code>df_b</code>,</p>
  
  <pre><code>df_a = df_a.merge(df_b.loc[df_b.deletion != 'L'], how='left', on=['number', 'code'])
  </code></pre>
  
  <p>and also, create a flag called <code>deleted</code> in the merge result <code>df_a</code>, that has three possible values - full, partial and none;</p>
  
  <p><code>full</code> - if all rows associated with a particular <code>number</code> value, have <code>deletion</code> = L;</p>
  
  <p><code>partial</code> - if some rows associated with a particular <code>number</code> value, have <code>deletion</code> = L;</p>
  
  <p><code>none</code> - no rows associated with a particular <code>number</code> value, have <code>deletion</code> = L;</p>
  
  <p>Also when doing the merge, rows from <code>df_b</code> with <code>deletion</code> = L should not be considered; so the result looks like,</p>
  
  <pre><code> number    amount    deletion    deleted    cur    code
   1000      10.0      X           partial    USD    700
   1000      10.0      X           partial    USD    700
   2000      20.0      X           none       USD    800
   2000      20.0      X           none       USD    800
   3000      0.0       NaN         full       USD    900
  </code></pre>
  
  <p>I tried,</p>
  
  <pre><code>g = df_b['deletion'].ne('L').groupby([df_b['number'], df_b['code']])
  m1 = g.any()
  m2 = g.all()
  
  d1 = dict.fromkeys(m1.index[m1 &amp; ~m2], 'partial')
  d2 = dict.fromkeys(m2.index[m2], 'full')
  
  d = {**d1, **d2}
  df_a = df_a.merge(df_b.loc[df_b.deletion != 'L'], how='left', on=['code', 'number'])
  
  df_a['deleted'] = df_a[['number', 'code']].map(d).fillna('none')
  </code></pre>
  
  <p>but I got an error,</p>
  
  <pre><code>AttributeError: 'DataFrame' object has no attribute 'map'
  </code></pre>
  
  <p>It seems <code>df</code> does not have <code>map</code> function, so I am wondering if there are any alternative ways to achieve this.    </p>