Question: I have a column of words and would like to count the frequency of each word in a text and save that result in another column.

Data:

```
        word        frequency   
0       l’iss           
1       station         
2       américaines         
3       capsule         
4       dernier         
5       solaires            
6       fusées          
7       privé   

```

Text:

> 
> états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matin à 7h44 utc. 22 mai 2012. - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, suite à la défaillance d'une valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur. le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur.
> 
> 
> 

I tried:

```
from collections import Counter

freq = df['word'].str.apply(Counter(text))

```

My output:

> 
> AttributeError: 'StringMethods' object has no attribute 'apply'
> 
> 
> 

Good output:

```
        word        frequency   
0       cape        1
1       station     2
2       américaines 0   
3       capsule     0   
4       dernier     1
5       solaires    0   
6       fusée       2

```

Answer: 
It would be easier the other way around. Start with the `Counter` object and from that build the dataframe

```
from collections import Counter

text = '''états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matin à 7h44 utc. 22 mai 2012. - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, suite à la défaillance d'une valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur. le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur.'''

# naive splitting, it might be better to use regex with \b
c = Counter(text.split())

df = pd.DataFrame(list(c.items()), columns=['word', 'count'])
print(df.head())

```

Outputs

```
         word  count
0  états-unis      2
1           :      3
2   lancement      4
3      réussi      2
4        pour      5

```

You can then filter the dataframe for the words you want (or you can do the filtering while building the dataframe).
Replace your commas with space, then `.split()` and then use a dictionary comprehension and map that to your df. 

```
import pandas as pd

text = "états-unis : lancement réussi pour station space x dragon états-unis : lancement réussi pour space x dragon la fusée falcon 9, développée par une société privée : spacex, a décollé de la station sans problème ce matin à 7h44 utc. 22 mai 2012. - prévu initialement pour samedi dernier, le lancement a été reporté à la dernière seconde, suite à la défaillance d'une valve dans un des neuf moteurs du pre\xadmier étage du lan\xadceur. le lanceur a décollé du site de lancement du pas de tir 40 (slc-40) de la base de cape canaveral en floride, qui était autrefois utilisé pour les fusée titan iii et iv et qui a été reconverti pour ce lanceur."

df = pd.DataFrame({'word': ["l’iss", 'station', "américaines", "capsule", "dernier", "solaires", "fusée", "privé"]})

text_list = text.replace(',', ' ').split()
word_counts = {i: text_list.count(i) for i in text_list}
df['frequency'] = df['word'].map(word_counts).fillna(0)

```