擅长:python、mysql、java
<p>计数器对传递给它的内容进行迭代。如果您向它传递一个字符串,它将进行迭代,因为它有个字符(这就是它的计数)。如果您向它传递一个列表(其中每个列表都是一个单词),它将按单词计数</p>
<pre><code>from collections import Counter
text = "spam and more spam"
c = Counter()
c.update(text) # text is a str, count chars
c
# Counter({'s': 2, 'p': 2, 'a': 3, 'm': 3, [...], 'e': 1})
c = Counter()
c.update(text.split()) # now is a list like: ['spam', 'and', 'more', 'spam']
c
# Counter({'spam': 2, 'and': 1, 'more': 1})
</code></pre>
<p>所以,你应该这样做:</p>
<pre><code>from collections import Counter
all_words = []
for msg in df['messages'].values:
words = str(msg).lower()
all_words.append(words)
count = Counter(all_words)
count.most_common(3)
# the same, but with generator comprehension
count = Counter(str(msg).lower() for msg in df['messages'].values)
</code></pre>