如何用Python Pandas按职位分组统计ID数量与呼叫次数?
解决Pandas分组统计的KeyError问题
错误原因分析
你写的代码逻辑完全搞反了:
- 先取
df['Title']只保留这一列,后续分组时根本找不到ID列,直接触发KeyError; - 你需要按
Title分组统计,结果代码里写成了按ID分组,完全不符合需求。
正确实现代码
根据你的需求,按Title分组后统计不同ID的数量(即每组的员工数)和呼叫记录总条数,可以用以下代码:
import pandas as pd # 假设你的数据集是df result = df.groupby('Title').agg( **{'ID(count)': ('ID', 'nunique'), 'Calls(count)': ('Calls', 'count')} ).reset_index() # 输出类似你期望的表格格式 print(result.to_string(index=False))
如果你的Calls列是每个员工的呼叫次数,需要统计每组的总呼叫次数(而非记录条数),把count换成sum即可:
result = df.groupby('Title').agg( **{'ID(count)': ('ID', 'nunique'), 'Calls(count)': ('Calls', 'sum')} ).reset_index()
代码解释
groupby('Title'):按职位列分组,这是你需求的核心分组逻辑;agg():批量指定不同列的统计方式,nunique用于统计不同ID的数量(去重计数),count/sum对应呼叫的记录数/总次数;reset_index():把分组的Title从索引变回普通列,让输出更符合你要的表格结构;to_string(index=False):去掉默认的行索引,输出更整洁的表格。
内容的提问来源于stack exchange,提问作者That_non_coder
相关产品推荐
相关产品推荐

