2016-06-20 8 views
1

Meine df hat 2 Spalten:Pandas - Get Werte in Klammern eines Pandadatenrahmen Spalte

Name Attr 
a(bc) 
b(aca) 
(cba) 

Ich würde die Spalte gefallen Attr die Werte in Klammern der Spalte Name

Name Attr 
a(bc) bc 
b(aca) aca 
(cba) cba 

I haben versucht:

df['Attr'] = re.findall('\(.*?\)',df['Name'].astype('str')) 

TypeError: expected string or buffer

schätzen wirklich jede Hilfe

Antwort

1

Verwendung str.extract:

df['Attr'] = df['Name'].str.extract(r"\(([A-Za-z]+)\)", expand=False) 
print (df) 
    Name Attr 
0 a(bc) bc 
1 b(aca) aca 
2 (cba) cba 

Oder fügen () zu Ihrem regex:

df['Attr'] = df['Name'].str.extract(r"\((.*?)\)", expand=False) 
print (df) 
    Name Attr 
0 a(bc) bc 
1 b(aca) aca 
2 (cba) cba