Tengo un DataFrame que contiene números como cadenas con comas para el marcador de miles. Necesito convertirlos en flotadores.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Supongo que necesito usar locale.atof. En efecto
df[0].apply(locale.atof)
funciona como se esperaba. Consigo una serie de carrozas.
Pero cuando lo aplico al DataFrame, aparece un error.
df.apply(locale.atof)
TypeError: ("no se puede convertir la serie a", u'Ocurrió en el índice 0 ')
y
df[0:1].apply(locale.atof)
da otro error:
ValueError: ('literal no válido para float (): 1200', u'ocurred en el índice 0 ')
Entonces, ¿cómo convierto esto DataFrame
de cadenas en un DataFrame de flotadores?
apply
en un DataFrame pasa una columna completa a la función como una serie (en este casolocale.atof
, que espera una cadena). Si usa elapplymap
método que @AndyHayden hace en la respuesta a continuación, debería poder hacerlo bien.