首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >beginner_question =‘我们什么时候向函数添加参数?’

beginner_question =‘我们什么时候向函数添加参数?’
EN

Stack Overflow用户
提问于 2022-06-12 12:54:31
回答 1查看 52关注 0票数 -1

我最近正在练习一些Python,我遇到了一个路障,在那里我无法让agg()工作,后来我发现这是因为我不需要调用函数。

我的问题是:我希望有人能解释一下,当我们在函数的末尾写()时,我们到底在做什么,以及做它和不做它有什么区别

编辑:这个代码是示例代码,IM没有在这个代码上寻找答案。我在寻找一个关于调用或不调用A函数的概念的答案,以及它是如何工作的。

我所使用的返回错误的内容:“no指定的”(无参数)

代码语言:javascript
复制
sales_stats = sales.groupby('type')['weekly_sales'].agg([np.min(),np.max(),np.median(),np.mean()])

正确代码:

对于每种存储类型,聚合weekly_sales:获取最小、最大、平均和中值

代码语言:javascript
复制
sales_stats = sales.groupby('type')['weekly_sales'].agg([np.min,np.max,np.median,np.mean])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-12 15:19:46

在……里面

代码语言:javascript
复制
sales.groupby('type')['weekly_sales'].agg([np.min,...]

sales是一个Pandas,groupby('type')是一个返回GroupBy对象的方法调用,而后者又有一个agg方法。

查找它的文档:

https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.core.groupby.DataFrameGroupBy.agg.html

根据这一点,agg的第一个参数是

代码语言:javascript
复制
func : function, string, dictionary, or list of string/functions

在Python中,函数是“第一类对象”,也就是说,它们可以像数字和列表一样作为参数传递,也可以放在列表中。

np.max是一个函数(在numpy模块中)。[np.max, np.min]是一个函数列表。

np.max是以下功能:

代码语言:javascript
复制
In [2]: np.max
Out[2]: <function numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)>

np.max(...)是函数的调用,并产生其他东西,而不是函数本身。在这种情况下,它返回一个数字:

代码语言:javascript
复制
In [3]: np.max(np.array([1,2,3]))
Out[3]: 3

agg需要的是函数,而不是数字。agg将负责使用组中的数组(或列表或序列)调用np.max

请注意,仅仅将()添加到函数中可能没有什么用处。它甚至可能引起错误。

所以你要问的部分是基本的Python --函数和调用函数之间的区别。同时也是pandasnumpy的问题。因此,它需要读取相应的函数/方法文档。

注意,agg文档指定了function本身必须接受的内容。

agg文档中获取示例框架:

它显示了为agg提供一个字符串:

代码语言:javascript
复制
In [9]: df.groupby('A').agg('min')
Out[9]: 
   B         C
A             
1  1 -1.589447
2  3 -0.997238

agg识别一组特定的字符串,并将其转换为函数调用。等价地,我们可以传递一个函数:

代码语言:javascript
复制
In [10]: df.groupby('A').agg(np.min)
Out[10]: 
   B         C
A             
1  1 -1.589447
2  3 -0.997238

但是,当我们像您一样使用np.min()时,我们会得到一个错误:

代码语言:javascript
复制
In [11]: df.groupby('A').agg(np.min())
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [11], in <cell line: 1>()
----> 1 df.groupby('A').agg(np.min())

File <__array_function__ internals>:4, in amin(*args, **kwargs)

TypeError: _amin_dispatcher() missing 1 required positional argument: 'a'

您将错误总结为“返回错误:‘无指定’(无参数)”。在这种情况下这样做不是个好主意。您应该完整地阅读错误,并完整地显示出来。回溯告诉我们,问题在于np.min()步骤。它并没有打电话给agg

  • read the traceback

  • read the docs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72592360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档