2017-01-15 3 views
1

ich einen langen Datenrahmen mit Indexwerten wie diese:Python Pandas Datenrahmen ersetzt wird: Streifen-String aus nachlauf Zahlen

| burger10 | ... 

| pasta25 | ... 

| milk  | ... 

| yoghurt() | ... 

Ich brauche den hinteren Ziffern oder Klammern loszuwerden. Ich versuche replace() mit Regex zu verwenden, aber ohne Erfolg. Versucht, dies:

energy.replace(to_replace='[0-9,\.,\(,\)]+', value='', regex=True, inplace=True) 

Antwort

2

Sie brauchen nicht () oder , in Zeichenklasse verwenden zu entkommen [], sie nur als wörtliche verwenden, und wenn Sie Hinter bedeuten, müssen Sie den Anker $ das Ende passen string:

energy[0].str.replace("[0-9()]+$", "") 

#0  burger 
#1  pasta 
#2  milk 
#3 yoghurt 
#Name: 0, dtype: object 

Wenn die Saiten im Index enthalten sind, können Sie .index zugreifen können, ändern und neu zuzuweisen, es zu dem Datenrahmen zurück:

energy.index = energy.index.str.replace("[0-9()]+$", "") 
+0

Ich sollte hinzufügen, dass meine Burger und Pasta und Milch den INDEX im Pandas DataFrame darstellen. Daher bin ich nicht sicher, wie Sie Ihre Antwort in einer vektorisierten Version für alle Elemente im Index des DataFrame anwenden können. – Ulu83

+0

Ich aktualisierte die Antwort für den Fall, dass sie Index sind. Sie können '.index' verwenden, um auf sie zuzugreifen und Änderungen vorzunehmen. – Psidom

+0

Ja, das funktioniert jetzt! – Ulu83

Verwandte Themen