计算 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
我有大 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