title: remove item from list if it does not match substring, regardless of the formatting
body: <p>I have the following dataframe:</p>
  
  <pre><code>df = pd.DataFrame()
  df['full_string'] = [['apples and bananas', 'applesandbananasamongstothers', 'something else'], 
            ['ApplesandBananas', 'apples and Bananas', 'bananas']]
  df['substring'] = ['apples and bananas', 'apples and bananas']
  </code></pre>
  
  <p>The desired outcome is to keep the items in df['full_string'] which contain text that is found in df['substring'], while taking into account that:</p>
  
  <ul>
  <li>casing, higher case or lowercase should not matter</li>
  <li>the spacing between the words</li>
  <li>the words may contain other text that is not related to the text in df['substring']</li>
  </ul>
  
  <p>Desired outcome:</p>
  
  <pre><code>df['outcome'] = [['apples and bananas', 'applesandbananasamongstothers'], 
        ['ApplesandBananas', 'apples and Bananas', 'bananas']]
  </code></pre>
  
  <p>What I have tried is to get the first keyword of df['substring'] to use that as a matcher with df['full_string'], however, this did not allow me to retain the 'bananas' element in the second row of the dataframe.</p>
  
  <p>(<strong>This is not working well on the dummy data</strong>):</p>
  
  <pre><code>first_keyword = []
  for i in df['substring']:
      first_keyword.append(i.split(' ', 1)[0])
  
  df['first_keyword'] = first_keyword
  
  df['C'] = [x[0].lower() in (x[1].lower()) for x in zip(df['first_keyword'], df['full_string'])]
  </code></pre>