title: update a column value in a dataframe from another matching column in different dataframe in Pandas
body: <p>i have two dataframes</p>
  
  <pre><code> df
   city   mail
    a    satya
    b    def
    c    akash
    d    satya
    e    abc
    f    xyz
  #Another Dataframe d as
   city   mail
   x      satya
   y      def
   z      akash
   u      ash
  </code></pre>
  
  <p>So now i need to update city in df from updated values in 'd' comparing the mails, if some mail id not found it should remain as it was. So it should look like</p>
  
  <pre><code> df ### o/p should be like
   city   mail
    x    satya
    y    def
    z    akash
    x    satya  #repeated so same value should placed here
    e    abc     # not found so as it was
    f    xyz
  </code></pre>
  
  <p>I have tried --</p>
  
  <pre><code>s = {'mail': ['satya', 'def', 'akash', 'satya', 'abc', 'xyz'],'city': ['a', 'b', 'c', 'd', 'e', 'f']}
  s1 = {'mail': ['satya', 'def', 'akash', 'ash'],'city': ['x', 'y', 'z', 'u']}
  df = pd.DataFrame(s)
  d = pd.DataFrame(s1)
  #from google i tried
  df.loc[df.mail.isin(d.mail),['city']] = d['city']
  </code></pre>
  
  <p>#giving erronous result as</p>
  
  <pre><code> city   mail
   x  satya
   y  def
   z  akash
   u  satya  ###this value should be for city 'x'
   e    abc
   f    xyz
  </code></pre>
  
  <p>I can't do a merge here on='mail',how='left', as in one dataframe i have less customer.So after merging, how can i map the value of non matching mail's city in merged one.</p>
  
  <p>Please suggest.</p>