熊猫:遍历列表并在列中的列表中查找单词...用从列表中找到的单词创建新列

时间:2018-07-19 01:56:34

标签: string list pandas find conditional

我有一个如下所示的列表:

list = ['狗','猫',马','鸟']

我在下面有一个示例数据框。我想让我的代码说:如果TEXT在您的列表中包含一个单词,则创建一个名为EXTRACT的新列,该列将挑选出关键字并将其放在新列中。

ID  TEXT               
1   hello you person    
2   you have a dog     
3   the bird flew      
4   the horse is here  
5   bird bird bird     

下面是我想要的数据框:

ID  TEXT               EXTRACT
1   hello you person    
2   you have a dog     dog
3   the bird flew      bird
4   the horse is here  horse
5   bird bird bird     bird

我知道一种使用如下语法的无效方法:如果单词在TEXT列中,然后将该单词放入新列中。但是我的真实数据帧中有很长的单词列表,并且上面的方法太繁琐了。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用df.apply并设置交集以查看哪些单词同时出现在文本列和单词列表中。

您需要考虑当文本列中出现多个单词时该怎么办

def word_finder(x):
  df_words = set(x.split(' '))
  extract_words =  word_set.intersection(df_words)
  return ', '.join(extract_words)

df = pd.DataFrame(data = {'text' : ['hello you person', 'you have a dog', 'the bird flew', 'the horse is here', 'bird bird bird', 'dog and cat']})

word_set = {'dog', 'cat', 'horse', 'bird'}

df['extract'] = df.text.apply(word_finder)

输出

                text   extract
0   hello you person          
1     you have a dog       dog
2      the bird flew      bird
3  the horse is here     horse
4     bird bird bird      bird
5        dog and cat  dog, cat