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

Pandas:使用列表变量执行groupby分组时报错的解决方法

Pandas groupby使用列表变量报错的解决方法

问题场景

我有一个Pandas DataFrame df:

state   name    age
WB      Jim     26
CA      John    32
CA      Jason   14

直接硬编码列名执行分组求最大值的代码可以正常运行:

df2 = df.groupby(['state', 'name'])['age'].max().reset_index()

但当用列表变量代替硬编码列名时:

cols = ['state', 'name']
df2 = df.groupby(cols)['age'].max().reset_index()

出现如下错误:

raise TypeError("You have to supply one of 'by' and 'level'")
TypeError: You have to supply one of 'by' and 'level'

解决方法

1. 确认列表变量的类型

这个报错大概率是因为cols变量的类型不是真正的列表——比如它可能被误赋值为字符串、Series或其他不符合要求的类型。先执行以下代码确认类型:

print(type(cols))

确保输出为<class 'list'>,如果不是,重新定义正确的列表:

cols = ['state', 'name']

2. 显式指定by参数

为避免Pandas对参数识别产生歧义,直接显式传入by参数来指定分组列:

cols = ['state', 'name']
df2 = df.groupby(by=cols)['age'].max().reset_index()

这种写法会明确告诉Pandas你要按cols列表中的列进行分组,彻底避免参数识别问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:00:02