Как отфильтровать строки из фрейма данных Pandas, где определенное значение соответствует RegEx - PullRequest
1 голос
/ 23 декабря 2019

У меня есть такой фрейм данных.

    Name      Age
0   Mr A      28
1   Mrs B     32
2   Mrs C     30
3   Mr D      34
4   Miss E    23
5   Mr F      37

Я хочу отфильтровать строки, содержащие «Mr» в качестве заголовка имени, и создать новый фрейм данных, как показано ниже.

    Name      Age
0   Mr A      28
1   Mr D      34
2   Mr F      37

Я попробовал следующий метод с использованием цикла.

import re
rows = []
for i, row in df.iterrows():
if re.search('Mr\s',row['Name']):
    rows.append(row)

new_df = pd.DataFrame(rows)

Хотя он работает нормально, но есть ли эффективный способ сделать это без использования цикла?

Ответы [ 2 ]

1 голос
/ 23 декабря 2019

Вы можете попробовать:

df.loc[df['Name'].str.contains(r'Mr ')]                                                                                                                                             

   Name  Age
0  Mr A   28
3  Mr D   34
5  Mr F   37
1 голос
/ 23 декабря 2019

Используйте str.contains с границей слова \b:

df = pd.DataFrame({"Name":["Mr A","Mrs B","Mrs C","Mr D"]})

print (df[df["Name"].str.contains(r"\bMr\b")])


   Name
0  Mr A
3  Mr D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...