title: Using regex sub on a df.column with apply in pandas df
body: <p>I have a df as such:</p>
  <pre><code>data= [{'Employees at store': 18, 'store': 'Mikes&amp;Carls P@rlor', 'hair cut inch':'$3'},
          {'Employees at store': 5, 'store': 'Over-Top', 'hair cut inch': '$9'}]
  
  df = pd.DataFrame(data)
  df
  </code></pre>
  <p>&amp; have</p>
  <pre><code>df=df.apply(lambda x: x.astype(str).str.lower().str.replace(' ','_')
                        if isinstance(x, object)
                        else x)
  </code></pre>
  <p>working for repalacing spaces with underscores. I know that you can link these per <a href="https://stackoverflow.com/questions/6116978/how-to-replace-multiple-substrings-of-a-string">How to replace multiple substrings of a string?</a> .</p>
  <p>And I also know that the link the exact string, not a subpart of it having tried:</p>
  <pre><code>df=df.apply(lambda x: x.astype(str).str.lower().str.
              replace(' ','_').str.
              replace('&amp;','and').str.
              replace('@','a') if isinstance(x, object) else x)
  </code></pre>
  <p>I think I have to use re.sub and do something like this <code>re.sub('[^a-zA-Z0-9_ \n\.]', '', my_str)</code>
  and can't figure out how to build it into my apply(lambda...) function.</p>