【问题标题】:How to filter rows from pandas data frame where the specific value matches a RegEx如何从熊猫数据框中过滤特定值与正则表达式匹配的行
【发布时间】:2025-12-08 19:45:02
【问题描述】:

我有一个这样的数据框。

    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

我想过滤包含“先生”作为名称标题的行并创建一个新的数据框,如下所示。

    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)

虽然效果很好,但是有没有不使用循环的有效方法呢?

【问题讨论】:

    标签: python regex pandas dataframe


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      df.loc[df['Name'].str.contains(r'Mr ')]                                                                                                                                             
      
         Name  Age
      0  Mr A   28
      3  Mr D   34
      5  Mr F   37
      

      【讨论】: