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

Pandas对groupby().first()结果执行apply时出现KeyError如何处理

报错核心原因

你调用groupby(['RB','test'])时,默认会将分组键RB、test转为结果DataFrame的多级行索引,不会保留为普通列。输出df_u.columns可以看到只有ValOption、contrat两个列,所以在apply里通过row['RB']取列时,自然找不到对应字段,抛出KeyError。

解决方案(按优先级推荐)
  • 方案1:分组时指定as_index=False,让分组键保留为普通列(最简便,无需修改原有自定义函数)
    代码修改为:
    df_u=df.groupby(['RB','test'], as_index=False).first()
    
    后续原有apply代码可以直接正常运行。
  • 方案2:分组后手动调用reset_index()将索引转回普通列
    代码修改为:
    df_u=df.groupby(['RB','test']).first().reset_index()
    
    效果和方案1完全一致,适合已经完成分组操作不想重算的场景。
  • 方案3:保留多级索引的前提下,修改自定义函数从行索引取值
    自定义函数修改为:
    def func(row):
        v1=row.name[0]*3 # row.name对应多级索引元组,第0位是RB的值
        v2=row.name[1]-1 # 第1位是test的值
        return v1+v2
    
    该方案可读性差,索引顺序调整后容易出错,非必要不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:15:01