J'ai un df avec de la monnaie:
df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']})
Currency
0 $1.00
1 $2,000.00
2 (3,000.00)
Je souhaite convertir le type de devise 'Currency' en float, mais je rencontre des problèmes avec la chaîne de parenthèses (qui indique un montant négatif). Ceci est mon code actuel:
df[['Currency']] = df[['Currency']].replace('[\$,]','',regex=True).astype(float)
ce qui produit une erreur:
ValueError: could not convert string to float: (3000.00)
Ce que je veux en tant que type float, c'est:
Currency
0 1.00
1 2000.00
2 -3000.00
Ajoutez simplement )
à la commande existante, puis convertissez (
en -
pour rendre les nombres entre parenthèses négatifs. Puis convertis pour flotter.
(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))
Currency
0 1
1 2000
2 -3000
si vous voulez vous assurer qu'il est ajouté au DataFrame, en particulier si vous avez beaucoup de colonnes dans le DataFrame moyen pour pouvoir y travailler
df['Currency']=(df['Currency'].replace( '[\$,)]','', regex=True )
.replace( '[(]','-', regex=True ).astype(float))