Fonction pour enlever les caractères qui ne marche pas

Fermé
claraxs Messages postés 8 Date d'inscription mercredi 7 septembre 2022 Statut Membre Dernière intervention 29 décembre 2022 - Modifié le 10 nov. 2022 à 12:05
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 10 nov. 2022 à 13:17

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 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 10 nov. 2022 à 11:42

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 8 Date d'inscription mercredi 7 septembre 2022 Statut Membre Dernière intervention 29 décembre 2022
10 nov. 2022 à 11:45

Hello, 

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

Merci!

0
claraxs Messages postés 8 Date d'inscription mercredi 7 septembre 2022 Statut Membre Dernière intervention 29 décembre 2022
10 nov. 2022 à 11:46

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

0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 10 nov. 2022 à 12:10

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 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473
10 nov. 2022 à 12:25

bonjour,

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

0
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756
Modifié le 10 nov. 2022 à 13:17

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