title: Python merge multiple substrings
body: <p>I have the below dataframes:</p>
  <pre><code>import pandas as pd
  
  df1 = pd.DataFrame({'Name':['Jon','Alex','Jenny','Rick','Joe'], 'Color':['Red', 'Blue', 'Green', 'Black', 'Yellow'], 'Tel':['3745 569', '785 985', '635 565a', '987', np.nan]})
  df2 = pd.DataFrame({'Phone':['987 856','985',np.nan, '569','459 56']})
  </code></pre>
  <p>I would like to :</p>
  <ol>
  <li>find the common substring value stored in column df1['Tel'] and df2['Phone]</li>
  <li>left merge df2, outputing the phone, the common substring value found in the df1['Tel'] and the df1['Colour'] column.</li>
  </ol>
  <p>Expected Result:</p>
  <p><a href="https://i.stack.imgur.com/QwNcb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QwNcb.png" alt="enter image description here" /></a></p>
  <p>What I have found and edited is a code that works only without NaN values and cannot search if the key is a substring like in my case:</p>
  <pre><code>a = ['Tel', 'Phone']
  b = [1 ,2]
  rhs ={}
  
  for x,y in zip(a, b):
      rhs[y] = (df1[x].apply(lambda x: df2[df2['Phone'].str.find(x).ge(0)]['colour']).bfill(axis=1).iloc[:, 0])
  </code></pre>