问题描述
我也有一个关键字/句子列表。我想将其与“内容”列匹配,看看是否有任何关键字或句子匹配。
# instructions_list is just the list of keywords and key sentences
instructions_list = instructions['Key words & sentence search'].tolist()
pattern = '|'.join(instructions_list)
bureau_de_sante[bureau_de_sante['Content'].str.contains(pattern,regex = True)]
虽然它给了我结果,但同时也给了我UserWarning:UserWarning:此模式具有匹配组。要实际获得组,请使用str.extract。 返回func(self,* args,** kwargs)。
问题:
- 如何防止出现用户警告?
- 找到并查看该列中是否有匹配项后,如何在新列中打印特定的匹配项?
解决方法
您正在提供regex来搜索数据框。如果指令列表中有括号(例如您的示例中的情况),则表示匹配组。为了避免这种情况,您必须对它们进行转义(即:在它们前面添加regex
,以使\
变成(Critical risk)
)。您可能还希望转义所有\(Critical risk\)
等特殊字符。
现在,您可以使用这些组从数据中提取匹配项。这是一个示例:
\ . " '
您可以通过简单的分配(例如df = pd.DataFrame(["Hello World","Foo Bar Baz","Goodbye"],columns=["text"])
pattern = "(World|Bar)"
print(df.str.extract(pattern))
# 0
# 0 World
# 1 Bar
# 2 NaN
)将此列添加到数据框中