title: How to filter a dataframe and each row, based on the presence of strings (from another list) in different columns and add a new column with annotation
body: <p>I have a dataframe (df1) where I would like to search each row for items from listA. If the dataframe has a row that contains 'positive' and one or more of the items from listA,  I would like to generate another dataframe (df2) by adding a column called result, listing the listA item + present. Items in list A, may exist as a stand alone item in each row of df1 or they may exist as part of a larger string. I've tried using pandas.DataFrame.loc but I am only able to search through one column at a time which isn't ideal.</p>
  <pre><code>    df1 = pd.DataFrame({'column no': ['1', '2', '3', '4'], 
                  'name': ['fred', 'sammy', 'tom', 'sam'], 
                  'test': ['positive', 'positive', 'negative', 'negative'],
                  'date': [&quot;15-'05&quot;, &quot;13-'02&quot;, &quot;12-'01&quot;, &quot;29-'08&quot;],
                  'food':['lemon-2.v4*?-10%;ham-12?-0%;orange?-58%', 'cake', 'cheese', 'eggs']})
  
      listA = [&quot;15-'05&quot;,'ham','tom','cake']
  </code></pre>
  <p>Output:</p>
  <pre><code>    df2 = pd.DataFrame({'column no': ['1', '2', '3', '4'],
                'name': ['fred', 'sammy', 'tom', 'sam'], 
                 'test': ['positive', 'positive', 'negative', 'negative'],
                 'date': [&quot;15-'05&quot;, &quot;13-'02&quot;, &quot;12-'01&quot;, &quot;29-'08&quot;],
                 'food':['lemon-2.v4*?-10%;ham-12?-0%;orange?-58%', 'cake', 'cheese', 'eggs'],
                 'result': [&quot;15-'05, ham, present&quot;, &quot;cake, present&quot;, 'tom, present', 'not found']})
  </code></pre>