Contar el número (total) de palabras especiales en un gran df de pandas.
Tengo un dataframe grande con textos:
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']]
y 4 conjuntos de palabras como:
words1 = ['festivales', 'pandemia', 'lugares de trabajo', 'mueren', 'faltaba']
words2 = ['persona ', 'faltaba', 'entrando', 'sobre']
además, las palabras del conjunto pueden contener espacios, como en ‘lugares de trabajo’.
Necesito contar cuántas veces las palabras de la lista están presentes en cada línea en total (no necesito saber cuántas veces aparece una de las palabras), para que el dataframe resultante se vea así:
word_set1 word_set_2
1 1 1
2 0 1
3 2 1
4 1 0
Intenté esto para contar (luego había planeado resumir los resultados):
for terms in words1:
df[str(terms)] = map(lambda x: x.count(str(terms)), target['tokenized'])
pero obtuve:
TypeError: object of type ‘map’ has no len()
davy.ai
Para contar cuántas veces están presentes las palabras de la lista en cada línea del DataFrame, podemos recorrer las palabras de cada conjunto y utilizar el método
str.count()
para contar las apariciones de cada palabra en cada fila. Luego, podemos crear un nuevo DataFrame con los recuentos para cada conjunto.Aquí está el código para lograr eso:
Esto producirá el DataFrame de conteo deseado: