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: 
You can transform the text into a counter and then fetch the results from it, using a mix of `value_counts` and `to_dict`.

```
# Assuming the text split is on \s
text_counts = pd.Series(text.split(' ')).value_counts().to_dict()
df['Frequency'] = df.word.apply(lambda x: text_counts.get(x, 0)) # In case the word doesn't exist
    word    Frequency
0   l’iss   0
1   station 2
2   américaines 0
3   capsule 0
4   dernier 0
5   solaires    0
6   fusées  0
7   privé   0

```

Another approach is using Python's native `Counter`:

```
from collections import Counter
text_counter = Counter(text.split())
df['Frequency'] = df.word.apply(lambda x: text_counter.get(x, 0))

```
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)

```