pandas: Dataframe.replace() avec la regex
J'ai une table qui ressemble à ceci:
df_raw = pd.DataFrame(dict(A = pd.Series(['1.00','-1']), B = pd.Series(['1.0','-45.00','-'])))
A B
0 1.00 1.0
1 -1 -45.00
2 NaN -
Je voudrais remplacer '-' pour '0.00' l'aide de dataframe.replace (), mais il se bat parce que des valeurs négatives, '-1', '-45.00'.
Comment puis-je ignorer les valeurs négatives et les remplacer uniquement '-' pour '0.00' ?
mon code:
df_raw = df_raw.replace(['-','\*'], ['0.00','0.00'], regex=True).astype(np.float64)
code d'erreur:
ValueError: invalid literal for float(): 0.0045.00
- Désolé de ne pas juste
df_raw.replace('-',0.00)
de travail dans ce cas? - Étonnamment, il n', mais pourquoi ne pas fonctionner de la manière dont je le fais, alors?
- parce que votre regex est de trouver une correspondance pour tous les
-
, si vous avez fait cela, alors il ne serait que de correspondre à l'entrée négative:df_raw.replace(['^-$'], ['0.00'], regex=True)
Vous devez vous connecter pour publier un commentaire.
Votre regex sur tous les
-
caractères:Si vous avez mis plus de limites, alors qu'il ne correspond qu'à ce seul personnage avec un licenciement alors qu'il fonctionne comme prévu:
Ici
^
moyen de début de la chaîne et de$
signifie la fin de la chaîne de sorte qu'il sera seul match sur ce caractère unique.Ou vous pouvez simplement utiliser
replace
qui ne correspondent sur les correspondances exactes: