我有一个像这样的数据框列:
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/