title: Csv file read in a Pandas Dataframe with utf-8 encoding, but printing the result of operations on the Dataframe with encoded chars fails
body: <p>I read a Csv file successfully in a Pandas Dataframe with utf-8 encoding, but printing the result of operations on the Dataframe(in this case, crosstab) fails with UnicodeEncodeError  'ascii' codec can't encode character u'\xb0' - should I encode/decode again, prior to print this intermediate Dataframe ("p" in the sample code below)</p>
  
  <pre><code>    import pandas as pd
      filehandle='/home/ekta/Desktop/test_data/df_30.csv'
      df0 = pd.read_csv(filehandle,skiprows=0, sep=',', encoding='utf-8',nrows=100)
      df=df0[['country', 'appname']]
      p=pd.crosstab(df['appname'], df['country'], rownames=['appname'], colnames=['country'])
      print p  #errr while printing this Dataframe
  
      """ Data frame read was success, both for df0 &amp; df, but cross tab fails with and the error that I get *"UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 13: ordinal not in range(128)"*. See "p" below  """
  
      #The dataframe, df looks like this 
  
         country                         appname
      0      SGP               Android Skout New
      2      SGP               Android Skout New
      3      SGP               Android Skout New
      7      SGP       Guess The Emoji - Android
      14     SGP             ScoreMobile Android
      15     IDN               Android Skout New
      16     IND  Truecaller - Caller ID &amp; Block
      19     IDN                  Indonesia News
         ....More ... &lt;Chopped&gt;
      251    IDN      'Anonymous healthcare_and_fitness App cflw`2B2[h1s`lNzF@sPC1FtaCji:6kTF@']
      272    SGP    '(old) Weather\xc2\xb0'
  # note the last two entries in this sample , there are more of these.
  </code></pre>
  
  <p>Since the "read" to df was success, here's what I want to understand -:</p>
  
  <ol>
  <li><p><strong>Should I be doing the encode-> decode</strong> on the "Series" object <code>(df['appname'])</code> before passing it to crosstabs ?
  Something similar to <code>df['country'].encode('utf-8').decode('utf-8')</code> [This is not a valid syntax though]</p></li>
  <li><p>The snippet below transforms df - which bring me to the question, <strong>WHY ?</strong></p></li>
  </ol>
  
  <blockquote>
  <pre><code>df0['country']=df0['country'].astype(unicode) 
  df0['country']
  0     S
  2     S
  3     S
  7     S
  14    S
  15    I
  16    I
  19    I
  21    I
  22    I
  25    I
  37    I
  41    S
  43    I
  </code></pre>
  </blockquote>
  
  <p><strong>My main question :</strong> After I provide the encoding as "utf-8", post which the csv read was success, why should I be required to encode again while I do crosstabs ? What am I doing wrong ?</p>
  
  <p><strong>Note that the creation of "p" the dataframe from the pd.crosstab is NOT a problem,</strong> just "print p".  I am using p as an intermediate object, but would like to know how to print this DataFrame - should I then use the (1) technique ? </p>