首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个单元格在列中具有多个值的Pandas df.mode

每个单元格在列中具有多个值的Pandas df.mode
EN

Stack Overflow用户
提问于 2020-01-01 17:41:38
回答 1查看 203关注 0票数 1

我有一个包含Keywords列的数据帧。该列中的每个单元格都有5-10个单独的值(逗号分隔),由1-3个单词组成。如何计算列中出现次数最多的关键字?

我尝试过df.Keywords.mode,但它返回每个单元格的所有值,因为它们显然不会在每个单元格中多次出现。

下面是一张需要澄清的图片:

所有的输入都是值得感谢的,

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-01 17:43:37

首先对DataFrame使用Series.str.splitexpand=True,并通过DataFrame.stack进行整形,然后按Series.value_counts计数并通过Series.head获得顶值

代码语言:javascript
复制
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计数

代码语言:javascript
复制
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      1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59551399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档