Python pandas: sortie dataframe à csv avec entiers

J'ai un pandas.DataFrame que je souhaite exporter vers un fichier CSV. Cependant, les pandas semble écrire certaines des valeurs que float au lieu de int types. Je ne pouvais pas ne pas trouver comment changer ce comportement.

La construction d'un bloc de données:

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

Vue:

>>> df
    a   b    c   d
x  10  10  NaN  10
y   1   5    2   3
z   1   2    3   4

À l'exportation:

>>> df.to_csv('test.csv', sep='\t', na_rep='0', dtype=int)
>>> 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

Pourquoi les dizaines ont un point zéro ?

Sûr, je pourrais juste coller cette fonction dans mon pipeline pour la reconversion de l'ensemble du fichier CSV, mais il me semble inutile:

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()

source d'informationauteur xApple