Ich habe eine DF-Spalte, die viele Zeichenfolgen enthält. Ich muss alle nicht-alphanumerischen Zeichen aus dieser Spalte entfernen: d. H.
df['strings'] = ["a#bc1!","a(b$c"]
Code ausführen:
Print(df['strings']): ['abc','abc']
Ich habe es versucht:
df['strings'].replace([',','.','/','"',':',';','!','@','#','$','%',"'","*","(",")","&",],"")
Aber das hat nicht funktioniert und ich bin der Meinung, dass es einen effizienteren Weg geben sollte, dies mit Regex zu tun. Jede Hilfe wäre sehr dankbar.
Verwenden Sie 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
Um alphanumerische -Zeichen beizubehalten (nicht nur Alphabete, wie von Ihrer erwarteten Ausgabe erwartet), benötigen Sie:
df.strings.str.replace('\W', '')
0 abc1
1 abc
Name: strings, dtype: object
Da Sie alphanumerisch geschrieben haben, müssen Sie 0-9 in den Regex einfügen. Aber vielleicht wollten Sie nur alphabetisch ...
import pandas as pd
ded = pd.DataFrame({'strings': ['a#bc1!', 'a(b$c']})
ded.strings.str.replace('[^a-zA-Z0-9]', '')
Aber es ist im Grunde das, was COLDSPEED geschrieben hat
Sie können auch Regex verwenden
import re
regex = re.compile('[^a-zA-Z]')
l = ["a#bc1!","a(b$c"]
print [regex.sub('', i) for i in l]
['abc', 'abc']