Pandas中多列上的分组聚合

时间:2014-08-17 16:52:25

标签: python pandas

我想在groupby对象上执行一些聚合。我想在不同的列上执行此操作,并且每列可能有多个聚合。

实施例

In [1]: from pandas import *

In [2]: df = DataFrame([[1, 'Alice',   100],
                        [2, 'Bob',    -200],
                        [3, 'Alice',   300],
                        [4, 'Dennis',  400],
                        [5, 'Bob',    -500]], 
               columns=['id', 'name', 'amount'])

In [3]: g = df.groupby('name')

In [4]: g.summarize({'num_ids': g.id.nunique(), 
                     'total_amount': g.amount.sum(),
                     'max_amount': g.amount.max()})

我知道这不是有效的语法。我希望我很清楚我想要实现的目标。

Pandas实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

正好在docs

之外
gb = g.agg({'id': pd.Series.nunique, 
            'amount': [np.sum, np.max]})

然后,如果您想重命名列,只需指定.columns

gb.columns = ['num_ids', 'total_amount', 'max_amount']