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

使用groupby与value_counts时触发KeyError: 'Yes'问题求助

解决方案:KeyError: 'Yes' 问题处理

问题原因

执行df.groupby('deliveryzipcode')['orderreturned'].value_counts()后,得到的是**多级索引(MultiIndex)**的Series,索引层级顺序为deliveryzipcode → orderreturned。直接用['Yes']访问时,Python会尝试在最外层索引(即邮编)中查找'Yes',显然不存在,因此抛出KeyError。

解决方法

方法1:使用.xs()提取指定层级的结果

.xs()方法可以直接跨层级提取指定索引值的结果,是处理多级索引最便捷的方式:

print(df.groupby('deliveryzipcode')['orderreturned'].value_counts().xs('Yes', level='orderreturned'))

执行后会输出每个邮编对应的退货(Yes)次数:

deliveryzipcode
75202    2
60660    1
Name: orderreturned, dtype: int64

方法2:重置索引后筛选列

将多级索引转换为普通列,再通过条件筛选获取目标数据:

# 先将统计结果转为DataFrame,新增count列存储计数
counts_df = df.groupby('deliveryzipcode')['orderreturned'].value_counts().reset_index(name='count')
# 筛选orderreturned为Yes的行
print(counts_df[counts_df['orderreturned'] == 'Yes'])

输出结果:

deliveryzipcode orderreturned  count
0           75202           Yes      2
2           60660           Yes      1

方法3:双重索引访问(适合单个邮编查询)

如果只需要查询某个特定邮编的退货次数,可以通过双重索引直接访问:

# 查询75202邮编的退货次数
print(df.groupby('deliveryzipcode')['orderreturned'].value_counts()['75202']['Yes'])

输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:40