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)
但问题是,这段代码适用于小型数据集,但对于大型数据集则需要花费大量时间。有什么解决办法吗?
谢谢
尝试使用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)
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |