获取包含字符串列表的 pandas 列的词频

meh*_*man 3 python dataframe pandas

我有一个熊猫数据框:

import pandas as pd
test = pd.DataFrame({'words':[['foo','bar none','scare','bar','foo'],
                              ['race','bar none','scare'],
                              ['ten','scare','crow bird']]})
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取数据框列中所有列表元素的单词/短语计数。我当前的解决方案是:

allwords = []

for index, row in test.iterrows():
    for word in row['words']:
        allwords.append(word)
Run Code Online (Sandbox Code Playgroud)
from collections import Counter
pd.Series(Counter(allwords)).sort_values(ascending=False)
Run Code Online (Sandbox Code Playgroud)

这可行,但我想知道是否有更快的解决方案。注意:我没有使用,' '.join()因为我不希望将短语分成单独的单词。

Shu*_*rma 5

让我们尝试.hstack一下.value_counts

pd.value_counts(np.hstack(test['words']))
Run Code Online (Sandbox Code Playgroud)
scare        3
foo          2
bar none     2
ten          1
bar          1
crow bird    1
race         1
dtype: int64
Run Code Online (Sandbox Code Playgroud)