熊猫GroupBy.agg()引发TypeError:aggregate()缺少1个必需的位置参数:'arg'

use*_*463 5 python aggregate python-3.x pandas pandas-groupby

我正在尝试创建同一字段的多个聚合。我正在python3.7中的熊猫中工作。根据文档,语法似乎非常简单:

https://pandas-docs.github.io/pandas-docs-travis/user_guide/groupby.html#named-aggregation

我看不到为什么在下面出现错误。有人可以指出问题并告诉我如何解决吗?

码:

qt_dy.groupby('date').agg(std_qty=('qty','std'),mean_qty=('qty','mean'),)
Run Code Online (Sandbox Code Playgroud)

错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-62-6bb3aabf313f> in <module>
      5 
      6 qt_dy.groupby('date')\
----> 7 .agg(std_qty=('qty','std'),mean_qty=('qty','mean'))

TypeError: aggregate() missing 1 required positional argument: 'arg'
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 10

就像你看起来正在尝试使用agg命名聚合 - 这是从v0.25支持的功能和上面只

对于较旧的版本,您将需要使用元组格式列表:

qt_dy.groupby('date')['qty'].agg([('std_qty','std'), ('mean_qty','mean')])
Run Code Online (Sandbox Code Playgroud)

或者,要聚合多个列,请使用字典:

qt_dy.groupby('date').agg({'qty': [('std_qty','std'), ('mean_qty','mean')]})
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请在此处查看我的答案。

  • @user3476463 不,这是 pandas 版本问题。0.25 目前正在开发中,几周后才会发布。 (2认同)