J'ai une colonne DF qui contient de nombreuses chaînes. Je dois supprimer tous les caractères non alphanumériques de cette colonne: i.e:
df['strings'] = ["a#bc1!","a(b$c"]
Code d'exécution:
Print(df['strings']): ['abc','abc']
J'ai essayé:
df['strings'].replace([',','.','/','"',':',';','!','@','#','$','%',"'","*","(",")","&",],"")
Mais cela n’a pas fonctionné et j’estime qu’il devrait exister un moyen plus efficace de le faire avec regex. Toute aide serait très appréciée.
Utilisez str.replace
.
df
strings
0 a#bc1!
1 a(b$c
df.strings.str.replace('[^a-zA-Z]', '')
0 abc
1 abc
Name: strings, dtype: object
Pour conserver les caractères alphanumériques (et pas seulement les alphabets comme le suggère le résultat attendu), vous avez besoin des éléments suivants:
df.strings.str.replace('\W', '')
0 abc1
1 abc
Name: strings, dtype: object
Comme vous avez écrit en alphanumérique, vous devez ajouter 0 à 9 dans la regex. Mais vous vouliez peut-être seulement alphabétique ...
import pandas as pd
ded = pd.DataFrame({'strings': ['a#bc1!', 'a(b$c']})
ded.strings.str.replace('[^a-zA-Z0-9]', '')
Mais c’est fondamentalement ce que COLDSPEED a écrit
Vous pouvez aussi utiliser regex
import re
regex = re.compile('[^a-zA-Z]')
l = ["a#bc1!","a(b$c"]
print [regex.sub('', i) for i in l]
['abc', 'abc']