python - 如何计算 Pandas 列中逗号分隔的重复值?

标签 python string pandas dataframe

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

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...

每一行都有逗号分隔的值。我想要的是计算所有唯一值的出现次数。例如:Math & Science 出现了 4 次。所以 Math & Science 的计数应该是 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()

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

谢谢

最佳答案

尝试使用 collections.Counter ,专为高性能任务而构建。

假设你开始于

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

然后做

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

关于python - 如何计算 Pandas 列中逗号分隔的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50252761/

相关文章:

python - 前瞻中具有多个条件组的正则表达式,也必须在匹配中捕获

python - float 组中的字符串数组,无需更改格式

C++ Mysql Real Escape 字符串问题

python - 从 pandas 时间戳中删除日期部分的最快方法

python - 使用箭头日期操作Python库以字符串形式解析日期

python - 使用 Pandas 自定义排名选择

python - 如何删除字典字典中的所有大括号

javascript - 如何在页面中嵌入代码编辑器?

python - Django Forms - 'readonly' 使用安全吗?

c - 用 C 语言生成字符串组合的程序