You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分组后无法设置列名?Mongo数据转DataFrame分组计数遇问题

解决Pandas分组统计计数列的问题

嗨,我来帮你搞定这个分组统计的问题~先看看你之前两种方法为啥失败,再给你正确的实现方式:

为啥之前的方法不行?

  • 方法一的问题:你只做了分组操作,没有执行聚合统计(比如计数),得到的g是一个GroupBy对象,不是DataFrame,直接改列名当然没用啦。得先通过聚合生成计数列,才能得到带列名的结果。
  • 方法二的问题:纯粹是语法错误!groupby()之后的['_id']前面多了个空格,正确的链式调用应该是groupby(...)[列名].count(),中间不能有多余空格,不然Python会解析出错。

正确的实现方式

首先要确保你的DataFrame里已经有Year列(如果还没从Date字段提取的话,先加这一步),然后用两种方式都能得到你想要的结果:

方式1:用size()统计分组记录数(推荐,因为它直接统计每组的行数,不考虑缺失值)

# 先从Date字段提取Year(如果还没处理的话)
crime['Year'] = pd.to_datetime(crime['Date']).dt.year

# 按Primary Type和Year分组,统计每组数量并命名为Count
result = crime.groupby(['Primary Type', 'Year']).size().reset_index(name='Count')

方式2:用count()指定列统计(适合你想基于某列非缺失值计数的场景)

修正你方法二的语法错误即可:

result = crime.groupby(['Primary Type', 'Year'])['_id'].count().reset_index(name='Count')

验证结果

运行完上面的代码后,你可以打印结果看看结构:

print(result.head())

输出会是包含Primary Type、Year、Count三列的DataFrame,完全符合你后续绘图的需求~

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:56:25