在pandas .agg()方法中使用多个lambda函数

时间:2017-03-28 16:58:01

标签: python pandas lambda aggregate-functions

我有这种数据框:

df = pd.DataFrame({  "values":['A', 'A', 'B', 'A', 'A', 'B', 'C', 'A', 'B', 'B'], 
                   "category": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
                   'dummy': list(range(10))
                  })

我可以按小组获得百分比:

df.groupby(['values', 'category'])['dummy'].nunique().groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))

我现在希望将此方法与.agg()一起使用,如下所示:

aggregators = {'counts': 'count',
              'percentage': lambda z: z.nunique().groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))
}

df.groupby(['values', 'category'])['dummy'].agg(aggregators)

但是我收到了这个错误:

AttributeError: 'int' object has no attribute 'groupby'
似乎lambda z: z.nunique()似乎是此表达式中的整数。 如何让我的lambda在agg内工作? 感谢。

0 个答案:

没有答案