假设我正在尝试创建一些堆栈溢出元数据的计数向量(实际上不是我在做什么,而是类似的(。因此,数据帧可能如下所示:
question: description: tags:
Q1 desc1 java, android
Q2 desc2 python, machine learning
Q3 desc3 javascript, Node.js
如果我想使用每个单独的标签而不是标签的组合来创建频率计数,我将如何做到这一点?
我知道我可以使用df.groupby('tags').count()
,但这只会将java, android
视为自己的类别,而不是将java
视为一个类别,而将'android视为一个单独的类别。
您可以使用正则表达式,s+
的str.split
用于带有一个或多个空格的逗号,然后按stack
创建Series
,最后按Series.value_counts
获取计数:
out = df['tags'].str.split(',s+', expand=True).stack().value_counts()
print (out)
python 1
javascript 1
machine learning 1
java 1
android 1
Node.js 1
dtype: int64