Eu tenho um DataFrame que contém números como strings com vírgulas para o marcador de milhares. Eu preciso convertê-los em carros alegóricos.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Acho que preciso usar locale.atof. De fato
df[0].apply(locale.atof)
funciona como esperado. Recebo uma série de carros alegóricos.
Mas quando eu o aplico ao DataFrame, recebo um erro.
df.apply(locale.atof)
TypeError: ("não é possível converter a série em", ocorreu no índice 0 ')
e
df[0:1].apply(locale.atof)
dá outro erro:
ValueError: ('literal inválido para float (): 1.200', u'ocorrido no índice 0 ')
Então, como faço para converter isso DataFrame
de strings em um DataFrame de floats?
apply
em um DataFrame passa uma coluna inteira para a função como uma série (neste casolocale.atof
, que espera uma string). Se você usar oapplymap
método que @AndyHayden usa na resposta a seguir, deve conseguir fazer isso perfeitamente.