计算 large pandas df 中的(总)特殊词数

Count the (total) number of special words in large pandas df

我有大 df 和文本:

target = [['cuantos festivales conciertos sobre todo persona perdido esta pandemia'],
['existe impresión estar entrando últimos tiempos pronto tarde mayoría vivimos sufriremos'],
['pandemia sigue hambre acecha humanidad faltaba mueren inundaciones bélgica alemania'],
['nombre maría ángeles todas mujeres sido asesinadas hecho serlo esta pandemia lugares de trabajo']]

和 4 组单词,例如:

words1 = ['festivales', 'pandemia', 'lugares de trabajo', 'mueren', 'faltaba']
words2 = ['persona ', 'faltaba', 'entrando', 'sobre']

此外,集合中的单词可能包含空格,例如 'lugares de trabajo'。

我需要计算列表中的单词在总和的每一行中出现了多少次(我不需要其中一个单词出现了多少次) 所以结果 df 看起来像:

  word_set1 word_set_2
1     1          1
2     0          1
3     2          1
4     1          0

我试过这个计数(然后我打算只总结结果)

for terms in words1:
    df[str(terms)] = map(lambda x: x.count(str(terms)), target['tokenized'])

但是得到了

TypeError: object of type 'map' has no len()

我们可以使用str.count方法得到预期的结果:

df['word_set1'] = df['text'].str.count('|'.join(words1))
df['word_set2'] = df['text'].str.count('|'.join(words2))

输出:

    text                                                word_set1   word_set2
0   cuantos festivales conciertos sobre todo perso...   2           2
1   existe impresión estar entrando últimos tiempo...   0           1
2   pandemia sigue hambre acecha humanidad faltaba...   3           1
3   nombre maría ángeles todas mujeres sido asesin...   2           0