从一列中包含空格的单词列中查找字符串列中的确切单词

时间:2018-04-11 11:06:58

标签: python string list dataframe

我想创建一个包含1或0的新列,如果列表中的任何单词与数据帧字符串列匹配为exaclty。

列表中的单词之间可能有多个空格,因此我无法使用str.split()进行完全匹配。

object<int>

预期输出

C++17

对list元素中单词的排序也很重要!!

代码尝试到现在

list_provided=["mul the","a b c"]
#how my dataframe looks
id  text
a    simultaneous there the
b    simultaneous there
c    mul why the
d    mul the
e    simul a b c
f    a c b

如何获取预期输出,我必须在列表中搜索单词与数据帧字符串列的完全匹配,中间有多个空格?

2 个答案:

答案 0 :(得分:1)

你几乎就在那里,你已经完成了所有的基础工作,现在剩下的就是调用正确的功能,在这种情况下,str.contains

data['found'] = data.text.str.contains(pattern).astype(int)
data

  id                    text  found
0  a  simultaneous there the      0
1  b      simultaneous there      0
2  c             mul why the      0
3  d                 mul the      1
4  e             simul a b c      1
5  f                   a c b      0

如果您的模式本身包含正则表达式OR管道,请先尝试转义它们:

import re
pattern = '|'.join([re.escape(i) for i in list_of_word])

答案 1 :(得分:0)

你可以在str.contains的帮助下实现这一目标。这也可以占用正则表达式!

data['found'] = np.where(data['text'].str.contains(pattern),1,0)