如何计算 pandas 列中逗号分隔的重复值?

use*_*696 3 python string dataframe pandas

我有一个像这样的数据框列:

1    Applied Learning, Literacy & Language
2             Literacy & Language, Special Needs
3            Math & Science, Literacy & Language
4            Literacy & Language, Math & Science
6               Math & Science, Applied Learning
7                               Applied Learning
8                            Literacy & Language
10                                Math & Science...
Run Code Online (Sandbox Code Playgroud)

每行都有逗号分隔的值。我想要的是计算所有唯一值的出现次数。例如:数学与科学出现 4 次。所以数学和科学的计数应该是 4。我尝试了以下代码:

cato=response['Category'].str.split(',')
cat_set=[]
for i in cato.dropna():
    cat_set.extend(i)
plt1=pd.Series(cat_set).value_counts().sort_values(ascending=False).to_frame()
Run Code Online (Sandbox Code Playgroud)

但问题是,这段代码适用于小型数据集,但对于大型数据集则需要花费大量时间。有什么解决办法吗?

谢谢

Ami*_*ory 5

尝试使用collections.Counter,它是专门为此类任务的高性能而构建的。

假设你从

df = pd.DataFrame({'Category': ['Applied Learning, Literacy & Language', 'Literacy & Language, Special Needs']})
Run Code Online (Sandbox Code Playgroud)

然后做

import collections
import itertools
>>> collections.Counter(itertools.chain.from_iterable(v.split(',') for v in df.Category))

Counter({' Literacy & Language': 1,
         ' Special Needs': 1,
         'Applied Learning': 1,
         'Literacy & Language': 1})
Run Code Online (Sandbox Code Playgroud)