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

如何处理Pandas GroupBy查询时出现的KeyError(key)异常?

处理Pandas分组查询的KeyError问题

首先是你用到的读取数据和分组代码:

import pandas as pd

colnames = ['Date', 'Items', 'Quantity', 'Price']
df1 = pd.read_csv('data_assignment_1.txt', sep=" ", names=colnames, header=None)

# 按日期和物品分组求和
groupby_date_item = df1.groupby(['Date', 'Items'])['Quantity'].sum()

当查询不存在的日期-物品组合(比如('2020-09-23', 'Item_D'))时会触发KeyError,可以用以下几种方式处理:

方法1:使用.get()方法返回默认值

Series.get()方法支持指定键不存在时的默认返回值,比如用0代表该日期下该物品无销量:

# 查询存在的组合
print(groupby_date_item.get(('2020-09-23', 'Item_A'), default=0))
# 输出:3

# 查询不存在的组合
print(groupby_date_item.get(('2020-09-23', 'Item_D'), default=0))
# 输出:0

方法2:用try-except捕获异常

如果需要自定义错误处理逻辑(比如打印提示),可以直接捕获KeyError:

try:
    print(groupby_date_item[('2020-09-23', 'Item_D')])
except KeyError:
    print("该日期-物品组合不存在或输入有误")

方法3:预先生成完整的日期-物品组合

如果希望所有可能的日期和物品组合都有对应值(不存在的填0),可以先构建完整的MultiIndex,再重新索引分组结果:

# 获取所有唯一日期和物品
all_dates = df1['Date'].unique()
all_items = df1['Items'].unique()

# 生成所有可能的日期-物品组合
full_index = pd.MultiIndex.from_product([all_dates, all_items], names=['Date', 'Items'])

# 重新索引,不存在的组合填充0
groupby_full = groupby_date_item.reindex(full_index, fill_value=0)

# 现在查询任意组合都不会报错
print(groupby_full[('2020-09-23', 'Item_D')])
# 输出:0
print(groupby_full[('2020-09-25', 'Item_A')])
# 输出:0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:35:26