使用正则表达式过滤数据帧行

时间:2020-07-16 15:53:21

标签: python pandas

这是我的数据框:

import pandas as pd


data = {'Period':['Group 1 vs Group 2:Change at 3 mo', 'Group 1:Change at 3 mo', 'Group 1 vs Group 2:Change at 3 mo', 'Group 2:Change at 3 mo'], 'estimate':[20, 21, 19, 18]}

df = pd.DataFrame(data)

现在,我只需要获取变量Period中的行不包含的行Group 1 vs Group 2。我尝试了这段代码:

df = df.loc[df['Period'].str.contains(pat = '(?!Group 1 vs Group 2)', regex = True)].reset_index(drop=True)

但是它不过滤行,因此我得到了原始df。如何解决我的代码,以便仅获取变量Period 不包含任何地方Group 1 vs Group 2的行?

1 个答案:

答案 0 :(得分:2)

您可以尝试str.match

df[~df.Period.str.match('Group 1 vs Group 2')]
Out[85]: 
                   Period  estimate
1  Group 1:Change at 3 mo        21
3  Group 2:Change at 3 mo        18