【问题标题】:Python Pandas: Filter Dataframe by applying regular expressionPython Pandas:通过应用正则表达式过滤数据框
【发布时间】:2026-01-23 16:05:02
【问题描述】:

我可以根据这样的列表元素过滤数据框;

import pandas as pd
W1 = ['Animal','Ball','Cat','Derry','Element','Lapse','Animate this']
W2 = ['Krota','Catch','Yankee','Global','Zeb','Rat','Try']
df = pd.DataFrame({'W1':W1,'W2':W2})

l1 = ['Animal','Zeb','Q']
print df[df['W1'].isin(l1) | df['W2'].isin(l1)]

        W1     W2
  0   Animal  Krota
  4  Element    Zeb

但是有没有办法通过应用正则表达式进行过滤? 例如;

 l1 = ['An','Cat']

 Intended result;
          W1         W2
  0   Animal        Krota
  1   Ball          Catch  
  2   Cat           Yankee
  6   Animate this  Try 

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

    试试这个:

    df[df['W1'].str.contains("|".join(l1)) | df['W2'].str.contains("|".join(l1))]
    
    
                 W1      W2
    0        Animal   Krota
    1          Ball   Catch
    2           Cat  Yankee
    6  Animate this     Try
    

    【讨论】:

    • 如果l1= pd.DataFrame({'W1': ['An', 'Ze'] 'W2': ['Kr', 'El']}),你会如何修改这个?这里An, Ze、Kr、El` 是regex 值。 Dataframe 中的条目可以是正则表达式值吗?
    • 我知道,如果l1 是一个数据框并且我想要完美匹配,我可以使用isin。但我有一个案例,数据框l1 中的条目不会完美匹配..所以我可能需要使用regex 值..