2016-10-06 2 views
1

У меня есть следующий dataframe в пандФильтрация панда dataframe по точному соответствию слова

  Date        Title 
58  March 2015  Data Visualization with JavaScript 
63 December 2014   Eloquent JavaScript, 2nd Edition 
90 October 2014    If Hemingway Wrote JavaScript 
96 December 2014      JavaScript for Kids 
158 February 2014 Principles of Object-Oriented JavaScript 
209 November 2005       Wicked Cool Java 

Я должен фильтровать строки, которые содержат слово JavaScript в нем. Я делаю следующее.

category_javascript = np.where(Publisher['Title'].str.contains(r'(?:\s|^)JavaScript(?:\s|$)')) 

Это дает мне следующее outupt

category_javascript 
Out[106]: (array([ 58, 90, 96, 158], dtype=int64),) 

Это не фильтрует 63 December 2014 Eloquent JavaScript, 2nd Edition Я думаю, потому что слово JavaScript имеет запятую после него. Я хочу найти точное слово независимо от пунктуации или комбинации. например, JavaScript-Book.

Пожалуйста, помогите

ответ

1

IIUC вам не нужно регулярное выражение, только строка JavaScript:

category_javascript = np.where(Publisher['Title'].str.contains('JavaScript')) 

print (Publisher['Title'].str.contains('JavaScript')) 
58  True 
63  True 
90  True 
96  True 
158  True 
209 False 
Name: Title, dtype: bool 

print (Publisher[Publisher['Title'].str.contains('JavaScript')]) 
       Date          Title 
58  March 2015  Data Visualization with JavaScript 
63 December 2014   Eloquent JavaScript, 2nd Edition 
90 October 2014    If Hemingway Wrote JavaScript 
96 December 2014      JavaScript for Kids 
158 February 2014 Principles of Object-Oriented JavaScript 

Вы можете добавить диакритические в регулярное выражение как [,;]:

print (Publisher['Title'].str.contains('(?:\s|^|[,;])JavaScript(?:\s|$|[,;])')) 
58  True 
63  True 
90  True 
96  True 
158  True 
209 False 
Name: Title, dtype: bool 

print (Publisher['Title'].str.contains('(?:\s|^|[,;])Java(?:\s|$|[,;])')) 
58  False 
63  False 
90  False 
96  False 
158 False 
209  True 
Name: Title, dtype: bool 
+0

У меня есть ваше мнение. что, если я хочу извлечь слово Java? Затем выше код вернет все строки, включая JavaScript – Neil

+0

Получил ли вы то, что я говорю? – Neil

+0

Да, дайте мне сек. – jezrael

Смежные вопросы