如何从特定值与RegEx匹配的pandas数据框中过滤行

时间:2019-12-23 02:27:09

标签: python regex pandas dataframe

我有一个这样的数据框。

    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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以尝试:

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

   Name  Age
0  Mr A   28
3  Mr D   34
5  Mr F   37