J'ai un DataFrame qui contient des nombres sous forme de chaînes avec des virgules pour le marqueur des milliers. J'ai besoin de les convertir en flotteurs.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
Je suppose que j'ai besoin d'utiliser locale.atof. En effet
df[0].apply(locale.atof)
fonctionne comme prévu. Je reçois une série de flotteurs.
Mais lorsque je l'applique au DataFrame, j'obtiens une erreur.
df.apply(locale.atof)
TypeError: ("impossible de convertir la série en", u'arrivée à l'index 0 ')
et
df[0:1].apply(locale.atof)
donne une autre erreur:
ValueError: ('littéral invalide pour float (): 1,200', u 's'est produit à l'index 0')
Alors, comment puis-je convertir ces DataFrame
chaînes en un DataFrame de flottants?
apply
sur un DataFrame passe une colonne entière à la fonction sous forme de série (dans ce caslocale.atof
, qui attend une chaîne). Si vous utilisez laapplymap
méthode utilisée par @AndyHayden dans la réponse ci-dessous, vous devriez pouvoir le faire très bien.