我有这种数据框:
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
内工作?
感谢。