Python str.contains的可扩展解决方案,包含熊猫中的字符串列表
我正在分析一个包含字符串对象行的数据帧Python str.contains的可扩展解决方案,包含熊猫中的字符串列表,python,regex,string,pandas,dataframe,Python,Regex,String,Pandas,Dataframe,我正在分析一个包含字符串对象行的数据帧df1。我有一个关键字参考列表,需要删除df1中包含参考列表中任何单词的每一行 目前,我是这样做的: 它不能扩展到数千个单词。然而,当我这样做时: 我产生错误第一个参数必须是字符串或编译模式 我尝试了以下解决方案: 这不会引发异常,但不会解析所有单词eather 如何有效地将str.contains与单词列表一起使用?对于可扩展的解决方案,请执行以下操作- 通过正则表达式或管道连接单词的内容 将此信息传递给str.contains 使用结果筛选df1 要为第
df1
。我有一个关键字参考列表,需要删除df1
中包含参考列表中任何单词的每一行
目前,我是这样做的:
它不能扩展到数千个单词。然而,当我这样做时:
我产生错误第一个参数必须是字符串或编译模式
我尝试了以下解决方案:
这不会引发异常,但不会解析所有单词eather
如何有效地将str.contains与单词列表一起使用?对于可扩展的解决方案,请执行以下操作-
str.contains
df1
df1[0]
(因为这可能被认为是不明确的)。最好使用loc
或iloc
(见下文)
注意:如果单词
是一个系列,这也适用
或者,如果第0列仅包含单词(而不是句子),则可以使用
df.isin
,这应该更快-
df1 = df1[~df1.iloc[:, 0].isin(words)]
当你说“不可伸缩”时,你的意思是你会有一堆重复的代码吗?如果是这样,请使用循环:
作为reference\u reference\u list中的单词:
您尝试过这个问题吗?我首先将这些单词连接起来,并将它们传递给str.contains
。您能详细说明一下:它不会引发异常,但不会解析所有单词。
?你能举个例子说明它不起作用吗?因为它应该是。@sudonym如果你想在正则表达式上寻找速度,我建议你用10000x的Flasktextspeed@sudonym不客气。你用的是contains还是isin?str.contains,因为我在iloc[:,0]@c中有句子ᴏʟᴅsᴘᴇᴇᴅ 我们应该尝试使用flashtext
发布答案,这听起来很有希望。请问,这是什么意思?r'\b(?:{})\b'@ahbon我正在捕获组中插入您的搜索短语。我只想把完整的单词匹配起来。
df1 = df1[~df1[0].str.contains(reference_word for reference_word in reference_list)]
reference_list: "words|to|remove"
df1 = df1[~df1[0].str.contains(reference_list)]
words = ["words", "to", "remove"]
mask = df1.iloc[:, 0].str.contains(r'\b(?:{})\b'.format('|'.join(words)))
df1 = df1[~mask]
df1 = df1[~df1.iloc[:, 0].isin(words)]