title: How to fix this “TypeError: sequence item 0: expected str instance, float found”
body: <p>I am trying to combine the cell values (strings) in a dataframe column using groupby method, separating the cell values in the grouped cell using commas. I ran into the following error:</p>
  
  <pre><code>TypeError: sequence item 0: expected str instance, float found
  </code></pre>
  
  <p>The error occurs on the following line of code, see the code block for complete codes:</p>
  
  <pre><code>toronto_df['Neighbourhood'] = toronto_df.groupby(['Postcode','Borough'])['Neighbourhood'].agg(lambda x: ','.join(x))
  </code></pre>
  
  <p>It seems that in the groupby function, the index corresponding to each row in the un-grouped dataframe is automatically added to the string before it was joined. This causes the TypeError. However, I have no idea how to fix the issue. I browsed a lot of threads but didn't find a solution. I would appreciate any guidance or assistance!</p>
  
  <pre><code># Import Necessary Libraries
  
  import numpy as np
  import pandas as pd
  from bs4 import BeautifulSoup
  import requests
  
  # Use BeautifulSoup to scrap information in the table from the Wikipedia page, and set up the dataframe containing all the information in the table
  
  wiki_html = requests.get('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M').text
  soup = BeautifulSoup(wiki_html, 'lxml')
  # print(soup.prettify())
  table = soup.find('table', class_='wikitable sortable')
  table_columns = []
  for th_txt in table.tbody.findAll('th'):
      table_columns.append(th_txt.text.rstrip('\n'))
  
  toronto_df = pd.DataFrame(columns=table_columns) 
  
  for row in table.tbody.findAll('tr')[1:]:
      row_data = []
      for td_txt in row.findAll('td'):
          row_data.append(td_txt.text.rstrip('\n'))
      toronto_df = toronto_df.append({table_columns[0]: row_data[0],
                                      table_columns[1]: row_data[1],
                                      table_columns[2]: row_data[2]}, ignore_index=True)
  toronto_df.head()
  
  # Remove cells with a borough that is Not assigned
  toronto_df.replace('Not assigned',np.nan, inplace=True)
  toronto_df = toronto_df[toronto_df['Borough'].notnull()]
  toronto_df.reset_index(drop=True, inplace=True)
  toronto_df.head()
  
  # If a cell has a borough but a Not assigned neighborhood, then the neighborhood will be the same as the borough
  toronto_df['Neighbourhood'] = toronto_df.groupby(['Postcode','Borough'])['Neighbourhood'].agg(lambda x: ','.join(x))
  toronto_df.drop_duplicates(inplace=True)
  toronto_df.head()
  </code></pre>
  
  <p>The expected result of the 'Neighbourhood' column should separate the cell values in the grouped cell using commas, showing something like this (I cannot post images yet, so I just provide the link):</p>
  
  <p><a href="https://d3c33hcgiwev3.cloudfront.net/imageAssetProxy.v1/7JXaz3NNEeiMwApe4i-fLg_40e690ae0e927abda2d4bde7d94ed133_Screen-Shot-2018-06-18-at-7.17.57-PM.png?expiry=1557273600000&amp;hmac=936wN3okNJ1UTDA6rOpQqwELESvqgScu08_Spai0aQQ" rel="nofollow noreferrer">https://d3c33hcgiwev3.cloudfront.net/imageAssetProxy.v1/7JXaz3NNEeiMwApe4i-fLg_40e690ae0e927abda2d4bde7d94ed133_Screen-Shot-2018-06-18-at-7.17.57-PM.png?expiry=1557273600000&amp;hmac=936wN3okNJ1UTDA6rOpQqwELESvqgScu08_Spai0aQQ</a></p>