title: Python pandas: output dataframe to csv with integers
body: <p>I have a <code>pandas.DataFrame</code> that I wish to export to a CSV file. However, pandas seems to write some of the values as <code>float</code> instead of <code>int</code> types. I couldn't not find how to change this behavior.</p>
  
  <p>Building a data frame:</p>
  
  <pre><code>df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'], dtype=int)
  x = pandas.Series([10,10,10], index=['a','b','d'], dtype=int)
  y = pandas.Series([1,5,2,3], index=['a','b','c','d'], dtype=int)
  z = pandas.Series([1,2,3,4], index=['a','b','c','d'], dtype=int)
  df.loc['x']=x; df.loc['y']=y; df.loc['z']=z
  </code></pre>
  
  <p>View it:</p>
  
  <pre><code>&gt;&gt;&gt; df
      a   b    c   d
  x  10  10  NaN  10
  y   1   5    2   3
  z   1   2    3   4
  </code></pre>
  
  <p>Export it:</p>
  
  <pre><code>&gt;&gt;&gt; df.to_csv('test.csv', sep='\t', na_rep='0', dtype=int)
  &gt;&gt;&gt; for l in open('test.csv'): print l.strip('\n')
          a       b       c       d
  x       10.0    10.0    0       10.0
  y       1       5       2       3
  z       1       2       3       4
  </code></pre>
  
  <p>Why do the tens have a dot zero ?</p>
  
  <p>Sure, I could just stick this function into my pipeline to reconvert the whole CSV file, but it seems unnecessary:</p>
  
  <pre><code>def lines_as_integer(path):
      handle = open(path)
      yield handle.next()
      for line in handle:
          line = line.split()
          label = line[0]
          values = map(float, line[1:])
          values = map(int, values)
          yield label + '\t' + '\t'.join(map(str,values)) + '\n'
  handle = open(path_table_int, 'w')
  handle.writelines(lines_as_integer(path_table_float))
  handle.close()
  </code></pre>