2017-06-06 5 views
2

Ich habe eine df High Schools. Ich versuche, die generischen Endungen des Schulnamens zu entfernen.Entfernen Sub Strings Pandas, Python

in[1]:df 
out[2]: 
    time school 
1 09:00 Brown Academy 
2 10:00 Covfefe High School 
3 11:00 Bradley High 
4 12:00 Johnson Prep 

school_endings = ['Academy','Prep,'High','High School'] 

Gewünschter:

out[3]: 
    time school 
1 09:00 Brown 
2 10:00 Covfefe 
3 11:00 Bradley 
4 12:00 Johnson 

Antwort

2
endings = ['Academy', 'Prep', 'High', 'High School'] 

endings = sorted(endings, key=len, reverse=True) 

df.assign(school=df.school.replace(endings, '', regex=True).str.strip()) 

    time school 
1 09:00 Brown 
2 10:00 Covfefe 
3 11:00 Bradley 
4 12:00 Johnson 
0

Verwendung rstrip() Verfahren die unerwünschte Zeichenfolge aus der Rückseite des Original-Zeichenkette strippen. zB:

mystring = "Brown Academy"

mystring.rstrip("Academy") -> geben u die o/p: 'Brown'

0

ich wahrscheinlich mit einem regulären Ausdruck Substitution gehen würde:

import re 

df['school']=df['school'].apply(lambda x: re.sub(r'\s+((Academy)|(Prep)|(High)|(High School))$','',x)) 
4

Verwendung split

df.school = df.school.str.split(' ').str[0] 

    school time 
0 Brown 09:00 
1 Covfefe 10:00 
2 Bradley 11:00 
3 Johnson 12:00 
Verwandte Themen