2017-12-08 5 views
0

Ich habe einen Pandas Dataframe, der aus E-Mails besteht, die ich mit Regex säubern muss. Meine Versuche, die Spalte zu bereinigen, werden jedoch nicht tatsächlich auf den Text angewendet.Reguläre Ausdrücke funktionieren nicht mit Pandas Dataframe

Beispiel Daten sind unten:

|subeject   | description  | 
--------------------------------------- 
|change email  | 'Hi, I'm trying...| 
|how are you?  | 'Hi, how are... | 

Der tatsächliche Datensatz etwa 2500 Zeilen.

Der Beispielcode, die ich verwende ist:

data = pd.read_csv('file.csv', names=['subject', 'description']) 
data['description'] = data['description'].str.lower().str.split() 

# Text cleaning below: 
data['description'] = data['description'].replace(r'<(.*?)\>', '') 
data['description'] = data['description'].replace(r'www[a-z]+', '') 
... # more regex 

Ausführen dieses Code in einem ipython Notebook mit Python 2.7 Ich würde die regex erwarten Aussagen zu identifizieren und sie mit einem Leerzeichen zu ersetzen.

Bei der Ausführung ändert sich der Text der Beschreibung jedoch nicht.

Eine alternative Methode, die ich mit dem gleichen Ergebnis versucht habe, ist wie folgt:

for i in data['description']: 
    re.sub(r'<(.*?)\>', '', i) 
    re.sub(r'www[a-z]+', '', i) 

Allerdings habe ich das gleiche Ergebnis mit keinem des Text entfernt werden.

Könnten Sie bitte beraten oder weisen Sie mich in die richtige Richtung?

+0

Ihr zweiter Ansatz meist richtig; Da Python-Strings jedoch unveränderlich sind, müssen Sie das Ergebnis jeder Substitution erfassen: 'i = re (r" ... ", '', i)' usw. – alexis

Antwort

0

Die Syntax für sollte Text Reinigung sein: ist

data['description'] = data['description'].str.replace(r'www[a-z]+', '')