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

使用pandas groupby与agg时遇报错及语法疑问求助

错误修复与原理解析

1. "out parameter not supported" 错误修复

你遇到的报错是因为直接将多个numpy函数作为位置参数传给agg()时,pandas会尝试向这些numpy函数传递out参数,但numpy的统计函数(如np.min)在pandas的分组聚合场景下不支持这个参数。

修复方法很简单:把需要使用的numpy函数放进列表里传给agg(),而不是逐个作为位置参数传递。修改后的代码如下:

# Import numpy with the alias np
import numpy as np
import pandas as pd
# The DataFrame "sales" is already implemented

# 修复第一处聚合代码
sales_stats = sales.groupby("type")["weekly_sales"].agg([np.min, np.max, np.mean, np.median])

# Print sales_stats
print(sales_stats)

# 修复第二处聚合代码
unemp_fuel_stats = sales.groupby("type")["unemployment","fuel_price_usd_per_l"].agg([np.min, np.max, np.mean, np.median])

# Print unemp_fuel_stats
print(unemp_fuel_stats)

如果想给聚合后的列名设置更友好的名称,也可以用字典格式指定:

sales_stats = sales.groupby("type")["weekly_sales"].agg(
    min_sales=np.min,
    max_sales=np.max,
    mean_sales=np.mean,
    median_sales=np.median
)

2. 为什么agg()中不需要给函数加括号?

agg()方法需要接收的是可调用的函数对象,而不是函数执行后的结果:

  • 如果你给函数加了括号(比如np.min()),Python会立即执行这个函数,此时没有传入要计算的数据,要么报错,要么得到一个无意义的结果,无法被agg()用来处理分组后的数据。
  • 直接传递函数名(如np.min),其实是把这个函数本身作为参数传给agg(),让pandas在处理每个分组的子数据集时,自动调用这个函数并传入对应的数据,完成统计计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:25:10