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

Pandas中count()统计结果为0时触发KeyError问题求助

解决按员工统计P出现次数的KeyError问题

你的问题出在get_group会直接查找指定的分组键,当某个员工没有P类型的记录时,这个分组不存在就会抛出KeyError。下面是几种更可靠的解决方案:

方法1:分组统计频次后转宽表(推荐)

通过groupby结合value_counts统计每个员工的各类记录数,再转成宽表并填充缺失值为0,直接提取P的统计结果:

import pandas as pd

# 按员工分组,统计Cycle类型的频次,转宽表后提取P列,缺省补0
p_count = df.groupby('Matricule')['Le Type Cycle'].value_counts().unstack(fill_value=0)['P']

方法2:用交叉表直接生成统计结果

pd.crosstab可以直接生成员工和Cycle类型的交叉统计矩阵,提取P列即可:

p_count = pd.crosstab(df['Matricule'], df['Le Type Cycle'])['P']

方法3:标记P类型后求和

先把Le Type Cycle为P的行标记为1,其他为0,再按员工分组求和,结果就是每个员工的P出现次数:

# 生成标记列
df['is_production'] = (df['Le Type Cycle'] == 'P').astype(int)
# 按员工求和
p_count = df.groupby('Matricule')['is_production'].sum()

兼容原有思路的修改(避免KeyError)

如果一定要保留原有的分组方式,可以通过字典的get方法处理不存在的分组:

grouped = df.groupby(['Matricule', 'Le Type Cycle'])['Le Type Cycle']
# 查找目标分组,不存在则返回空列表,长度为0
target_group = grouped.groups.get((index, 'P'), [])
count = len(target_group)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:18:08