2013-10-08 24 views
5

Non riesco a trovare l'opzione per impostare il punto decimale per float (".", O ",") quando si scrive un DataFrame in un file csv. (La lettura non è un problema.) Il mio compito/problema: sto pubblicando un programma/script e voglio che tutti gli utenti, indipendentemente dalle impostazioni del sistema operativo e della lingua, lo usino e producano specificatamente un output csv con l'impostazione del punto decimale come indicato in " locale.localeconv() [ "decimal_point"]". L'opzione "float_format" non ha funzionato per me. Devo convertire ogni float in una stringa e sostituire "." con ","? Se questo è pubblicato altrove, si prega di scusare il mio errore e fornirmi il link corretto.Python PANDAS scrive in csv: come impostare il punto decimale ("." O ",")?

Grazie mille per il vostro tempo e impegno !!

+0

Questo è rilevante. Non vedo nulla di particolarmente utile, ma vorrei guardarmi intorno qui: https://github.com/pydata/pandas/issues/4668 –

risposta

4

Non sarà che efficiente, ma fa il lavoro (appena to_csv) dopo)

In [29]: df = DataFrame(dict(A = [1.5,2.5], B = [2.5,3.0])) 

In [30]: df 
Out[30]: 
    A B 
0 1.5 2.5 
1 2.5 3.0 

In [31]: df.applymap(lambda x: str(x).replace('.',',')) 
Out[31]: 
    A B 
0 1,5 2,5 
1 2,5 3,0 

Questo dovrebbe essere un po 'più veloce (ha bisogno di almeno 0,12)

In [37]: df.applymap(str).replace(r'\.',',',regex=True) 
Out[37]: 
    A B 
0 1,5 2,5 
1 2,5 3,0 
+0

Grazie per la tua risposta !! – tryptofame

+0

La prima risposta (utilizzando la funzione lambda) ha funzionato, la seconda no ("TypeError: replace() ha ottenuto un argomento di parole chiave inaspettate 'regex'" utilizzando Python 2.7.3). È abbastanza veloce! – tryptofame

+0

hai bisogno di almeno 0.12 per la seconda versione, IIRC – Jeff

Problemi correlati