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

Python Pandas中使用get_group方法获取分组时出现KeyError的问题咨询

解决Pandas中groupby.get_group的KeyError问题

我来帮你分析一下这两个KeyError的问题,根源都是你传入的键类型和分组列的类型不匹配,下面逐个给出解决方法:


1. 处理load_group的KeyError

从df0.info()的输出能看到,load_group是category类型,而你传入的是字符串'(20, 25]',这里可能存在两个问题,我们一步步排查解决:

第一步:确认分组类别是否真实存在

先执行代码打印load_group所有可用的类别,检查是否有格式差异(比如空格、符号写错):

print(df0['load_group'].cat.categories)

看看输出里是否包含'(20, 25]',比如要注意是不是类别里实际是'(20,25]'(没有空格)。

第二步:匹配正确的键获取分组

如果确认类别存在,有两种可靠的解决方式:

  • 方式一:严格匹配类别字符串(包括空格和符号)直接调用:
    df0.groupby('load_group').get_group('(20, 25]')
    
  • 方式二:临时将category转为object类型再分组(适合不确定类型匹配的场景,但category类型更高效,优先用方式一):
    df0['load_group'] = df0['load_group'].astype(object)
    df0.groupby('load_group').get_group('(20, 25]')
    

2. 处理month_year的KeyError

month_year的类型是period[M](月份周期类型),你传入的字符串'2016-07'无法直接匹配到Period对象,所以触发KeyError。

解决方法:传入对应类型的Period对象

你需要创建一个和列类型匹配的pd.Period实例作为键:

import pandas as pd
# 创建指定月份的周期对象
target_month = pd.Period('2016-07', freq='M')
df0.groupby('month_year').get_group(target_month)

也可以写成更简洁的形式:

df0.groupby('month_year').get_group(pd.Period('2016-07', 'M'))

补充小技巧:快速确认分组键的类型和值

如果你不确定分组后的键是什么类型,可以先打印所有分组键直观查看:

# 查看load_group的分组键
print(list(df0.groupby('load_group').groups.keys()))
# 查看month_year的分组键
print(list(df0.groupby('month_year').groups.keys()))

这样就能精准匹配键的类型和值,避免类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:19:10