2017-02-14 77 views
1

我有一个数据框,列表中的字符串作为列,并希望使用collections.counter创建词语频率词典。数据帧如下所示:从数据框列表创建词语频率词典

>>> job_title['title'] 
0   [responsible, caring, trustworthy, babysitter] 
1    [compassionate, trustworthy, babysitter] 
2  [family, looking, kindergarten, preschool, chi... 
3  [babysitter, needed, 2, children, bee, cave, n... 
4    [fun, patient, nonjudgemental, babysitter] 
5  [responsible, interactive, intelligent, babysi... 
6     [responsible, friendly, babysitter] 
7  [family, looking, kindergarten, preschool, chi... 
8  [family, looking, kindergarten, preschool, chi... 
9      [reliable, clean, friendly, nanny] 

什么是最有效的方法来实现这一目标?

回答

1

我想你可以扁平lists通过chain.from_iterable然后用Counter

from itertools import chain 
from collections import Counter 

print (Counter(chain.from_iterable(job_title.title))) 

样品:

job_title = pd.DataFrame({'title':[['responsible', 'caring', 'trustworthy', 'babysitter'], 
            ['compassionate', 'trustworthy', 'babysitter']]}) 

print (job_title) 
              title 
0 [responsible, caring, trustworthy, babysitter] 
1  [compassionate, trustworthy, babysitter] 


print (Counter(chain.from_iterable(job_title.title))) 
Counter({'babysitter': 2, 'trustworthy': 2, 
     'compassionate': 1, 'responsible': 1, 'caring': 1}) 
+0

这是完美的,太感谢你了! – mangodreamz