You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Pandas中正确分组统计DataFrame各code的出现次数?

解决DataFrame按code分组统计出现次数的问题

没问题,我来帮你搞定这个分组统计的需求!

首先,你用df.groupby('code').agg('count')没得到预期结果的原因是:当你的DataFrame只有code这一列时,这个语句会生成一个以code为索引、列名还是code的结果,结构和你想要的code+count列的格式不符。

给你几个简单高效的解决方案:

方法1:使用size()(最推荐)

size()方法专门用来统计每个分组的行数,搭配reset_index()可以把索引转成列,再指定列名:

group = df.groupby('code').size().reset_index(name='count')

执行后就能得到你想要的结果:

code  count
0  0000      2
1  0123      2
2  4567      1

方法2:使用value_counts()(更直接)

针对单列统计频次,value_counts()是最便捷的方式,之后转成DataFrame并调整结构即可:

# 先统计频次
group = df['code'].value_counts().reset_index(name='count')
# 如果需要按code升序排列(和你的示例一致),可以加上排序
group = group.sort_values('code').reset_index(drop=True)

方法3:改造你原来的语句

如果一定要用agg('count'),可以对结果做后续调整,把列名重命名并重置索引:

group = df.groupby('code').agg('count').rename(columns={'code': 'count'}).reset_index()

内容的提问来源于stack exchange,提问作者aabujamra

火山引擎 最新活动