title: >AttributeError: 'list' object has no attribute 'lower' (in a lowercase dataframe)
body: <p>I don't understand this error... I've already turned df into lowercase before turning it into a list</p>
  
  <p>dataframe:</p>
  
  <pre><code>    all_cols
  0   who is your hero and why
  1   what do you do to relax
  2   this is a hero
  4   how many hours of sleep do you get a night
  5   describe the last time you were relax
  </code></pre>
  
  <p>Code: </p>
  
  <pre><code>from sklearn.cluster import MeanShift
  from sklearn.pipeline import Pipeline
  from sklearn.preprocessing import FunctionTransformer
  from sklearn.feature_extraction.text import TfidfVectorizer
  
  df['all_cols'] = df['all_cols'].str.lower()
  df_list = df.values.tolist()
  
  pipeline = Pipeline(steps=[
  ('tfidf', TfidfVectorizer()),
  ('trans', FunctionTransformer(lambda x: x.todense(), accept_sparse=True)),
  ('clust', MeanShift())])
  
  pipeline.fit(df_list)
  pipeline.named_steps['clust'].labels_
  
  result = [(label,doc) for doc,label in zip(df_list, pipeline.named_steps['clust'].labels_)]
  
  for label,doc in sorted(result):
      print(label, doc)
  </code></pre>
  
  <p>But I have an error in this line:</p>
  
  <blockquote>
    <p>AttributeError                            Traceback (most recent call last)
     in </p>
    
    <p>----> 1 pipeline.fit(df_list)</p>
  
  <pre><code> 2 pipeline.named_steps['clust'].labels_
  </code></pre>
    
    <p>AttributeError: 'list' object has no attribute 'lower'</p>
  </blockquote>
  
  <p>But why is the program returning a lowercase error if I've already passed the lowercase dataframe before?</p>