我有一个包含Keywords列的数据帧。该列中的每个单元格都有5-10个单独的值(逗号分隔),由1-3个单词组成。如何计算列中出现次数最多的关键字?
我尝试过df.Keywords.mode,但它返回每个单元格的所有值,因为它们显然不会在每个单元格中多次出现。
下面是一张需要澄清的图片:

所有的输入都是值得感谢的,
谢谢!
发布于 2020-01-01 17:43:37
首先对DataFrame使用Series.str.split和expand=True,并通过DataFrame.stack进行整形,然后按Series.value_counts计数并通过Series.head获得顶值
df = pd.DataFrame({'Keywords':['aa,bb,vv,vv','aa,aa,cc,bb','zz,bb,aa,ss']})
N = 5
df1 = (df.Keywords.str.split(',', expand=True)
.stack()
.value_counts()
.head(N)
.rename_axis('val')
.reset_index(name='count'))
print (df1)
val count
0 aa 4
1 bb 3
2 vv 2
3 zz 1
4 cc 1如果没有缺失值,另一种解决方案是展平拆分的列表并按Counter计数
from collections import Counter
N = 5
df1 = pd.DataFrame(Counter([y for x in df.Keywords for y in x.split(',')]).most_common(N),
columns=['val','count'])
print (df1)
val count
0 aa 4
1 bb 3
2 vv 2
3 zz 1
4 cc 1https://stackoverflow.com/questions/59551399
复制相似问题