熊猫使用groupby为groupby变量的每个值应用不同的功能

埃姆维

我想使用groupby,但是我不想指定将相同的功能应用于每个组,而是要指定将哪个功能应用于哪个组值。我在这里提供了一个非常简单的示例来说明这一点,但是实际上我的groupby变量有很多值,而且我的函数都是用户定义的并且相当复杂-因此,解决方案涉及分别选择每个组或应用对所有小组都使用相同的功能将不切实际。(这种回答方式被提供给了这个非常相似的问题:如何对每组大熊猫groupby应用不同的功能?但是他们没有解决我的问题)

df = DataFrame({'Category': ['A','A','A','B','B','B','C','C','C'],
               'Total': [1, 2, 3, 1, 2, 3, 1, 2, 3]})

我希望能够为我的groupby变量的每个级别指定一个函数:

function_map = {'A': np.mean,
                'B': np.max,
                'C': np.min}

我想做的是这样的:

df.groupby('Category').apply(function_map)

我想要的结果形式看起来像这样的DataFrame:

result = DataFrame({'Category': ['A','B','C'],
               'Total': [2, 3, 1]})
阿库什纳

只是使用lambda,像这样

df.groupby('Category').apply(lambda r: function_map[r.name](r.Total))

同时,你应该使用numpy功能,因此np.meannp.maxnp.min

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章