Pandas中DataFrame.agg(f)与DataFrame.agg('f')的区别是什么?
问题解答
你的猜测完全正确,pandas的agg方法对传入的参数确实是按照这个逻辑解析的,具体规则如下:
- 当传入参数为字符串类型的函数名时,pandas会优先调用当前操作的
Series对象下的同名内置方法。
对应的现象解释:df.agg(['sum'])、df.agg(['mean'])可以正常运行,因为sum、mean都是pandasSeries内置的聚合方法df.agg(['np.sum'])报错,是因为Series没有名为np.sum的内置方法
- 当传入参数为可调用对象(函数本身)时,pandas会直接将每一列的
Series作为入参传给这个函数执行。
对应的现象解释:df.agg([np.sum])可以正常运行,就是直接把每列Series传入np.sum函数计算结果df.agg([mean])报错,是因为你当前的代码运行环境中没有名为mean的全局可调用对象,没有提前从numpy或者pandas中导入对应函数,如果你提前执行from numpy import mean,这个写法也可以正常运行
另外补充说明:类似sum这种既属于Series内置方法、也属于Python内置函数/numpy通用函数的名称,两种写法的运行结果一致,就是你观察到的df.agg([sum])和df.agg(['sum'])输出相同的原因。
内容的提问来源于stack exchange,提问作者qiu
相关产品推荐
相关产品推荐

