Fonction pour enlever les caractères qui ne marche pas

claraxs Messages postés 9 Statut Membre -  
mamiemando Messages postés 34193 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

J'ai utilisé la fonction suivante pour retirer les caractères spéciaux de mon dataframe. Cependant, quand j'active la fonction, rien ne change et je n'arrive pas à savoir pourquoi. Pouvez-vous m'éclairer là-dessus svp?

b="!@#$"

def remove_character(x):
    for char in b:
            x=x.str.replace(char, " ")
    print(x)

remove_character(df)


Windows / Edge 107.0.1418.35

A voir également:

6 réponses

Phil_1857 Messages postés 1956 Statut Membre 168
 

Bonjour,

Tu appelles la fonction remove_character en lui passant df comme argument

Mais df est initialisé où ?????

De plus ce serait plutôt

x=x.replace(char," ")

0
claraxs Messages postés 9 Statut Membre
 

Hello, 

c'est le nom de mon dataframe :) . Il est initialisé dans mon code déjà. 

Merci!

0
claraxs Messages postés 9 Statut Membre
 

et ça ne marche non plus avec seulement x.replace(char, " ")..

0
Phil_1857 Messages postés 1956 Statut Membre 168
 

En tout cas, ça, ça marche:

x='abc'
x=x.replace('a','d')

Faudrait voir ce que contient df

Ça se présente comme une chaine de caractères, comme  ma variable x ci-dessus ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 

bonjour,

peux-tu partager un exemple complet, que nous puissions tester?

0
mamiemando Messages postés 34193 Date d'inscription   Statut Modérateur Dernière intervention   7 891
 

Bonjour,

La méthode pandas.DataFrame.replace existe bien, mais ne fonctionne pas comme str.replace (voir la documentation pour comprendre ce que ça fait). C'est pour ça que ça ne fait pas ce que tu veux.

Ici, une approche possible consiste à utiliser pandas.DataFrame.applymap :

import pandas as pd

def clean(x):
    if isinstance(x, str):
        return "".join(a for a in x if a not in set("!@$"))
    else:
        return x

df = pd.DataFrame(["a!b@c$", "d!e@f$"])
df.applymap(clean)
print(df)

Résultat : 

     0
0  abc
1  def

Bonne chance

0