Ho un DataFrame che contiene numeri come stringhe con virgole per l'indicatore delle migliaia. Devo convertirli in float.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Immagino di dover usare locale.atof. Infatti
df[0].apply(locale.atof)
funziona come previsto. Ottengo una serie di galleggianti.
Ma quando lo applico a DataFrame, ricevo un errore.
df.apply(locale.atof)
TypeError: ("impossibile convertire la serie in", u'occurred at index 0 ')
e
df[0:1].apply(locale.atof)
dà un altro errore:
ValueError: ('valore letterale non valido per float (): 1.200', u'occurred at index 0 ')
Quindi, come converto questo DataFramedi stringhe in un DataFrame di float?
applyquell'errore perché su un DataFrame passa un'intera colonna alla funzione come una serie (in questo casolocale.atof, che si aspetta una stringa). Se usi ilapplymapmetodo che fa @AndyHayden nella risposta qui sotto, dovresti essere in grado di farlo bene.