2015-08-03 4 views
0

У меня есть что-то вроде следующего кода:Как вернуть согласованную часть строки в серии Pandas?

df[df["A"].str.contains("\d+")]

Это фактически соответствует всем строкам в серии с матчем слова где-нибудь. Тем не менее, он также соответствует (как ожидалось), строки стиля:

1, «AB: 123»

Я хотел бы функцию, чтобы вернуть только согласованный часть строки («123»), а не всю строку. Это возможно?

ответ

2

Как об использовании Series.str.extract, пример -

df[df["A"].str.contains("\d+")]['A'].str.extract("(\d+)") 

Пример/Demo -

In [41]: df = pd.DataFrame([['123'],['ab 123'],['xyz']],columns = ['A']) 

In [42]: df 
Out[42]: 
     A 
0  123 
1 ab 123 
2  xyz 

In [43]: df[df["A"].str.contains("\d+")] 
Out[43]: 
     A 
0  123 
1 ab 123 

In [47]: df[df["A"].str.contains("\d+")]['A'].str.extract("(\d+)") 
Out[47]: 
0 123 
1 123 
Name: A, dtype: object 

In [48]: df['A'].str.extract("(\d+)") 
Out[48]: 
0 123 
1 123 
2 NaN 
Name: A, dtype: object 
Смежные вопросы