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

如何在pandas groupby中传入多变量?cohort变量定义遇KeyError

问题描述

以下代码均可正常运行:

cohort = r'priority' 
result2025 = df.groupby([cohort],as_index=False).agg({'resolvetime': ['count','mean']})
cohort = r'impactedservice' 
result2025 = df.groupby([cohort],as_index=False).agg({'resolvetime': ['count','mean']})
result2025 = df.groupby(['impactedservice','priority'],as_index=False).agg({'resolvetime': ['count','mean']})

但当我将cohort变量定义为以下形式时无法运行:

cohort = r'impactedservice,priority' # 双分组列
result2025 = df.groupby([cohort],as_index=False).agg({'resolvetime': ['count','mean']})

此时会报错:

KeyError: 'impactedservice,priority'

请问这种情况下该如何正确定义cohort变量?

解决方案

报错原因是你把两个列名拼成了单个字符串,pandas会将这个带逗号的字符串当作一个独立列名去DataFrame中查找,自然找不到对应列,因此抛出KeyError。

正确定义方式有两种:

方式一:直接定义为列名列表

把cohort定义为包含两个列名字符串的列表,groupby就能识别出按这两个列分组:

cohort = ['impactedservice', 'priority']
result2025 = df.groupby(cohort, as_index=False).agg({'resolvetime': ['count','mean']})

(注:groupby里无需额外加[],因为cohort本身就是列表,写成groupby([cohort], ...)也能运行,但没必要)

方式二:从逗号分隔的字符串拆分

如果列名来自逗号分隔的字符串,可通过split(',')方法拆分出列表:

cohort_str = r'impactedservice,priority'
cohort = cohort_str.split(',')
result2025 = df.groupby(cohort, as_index=False).agg({'resolvetime': ['count','mean']})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:42:34