python - Pandas 使用 groupby 为 groupby 变量的每个值应用不同的函数

标签 python pandas

我想使用 groupby,但我想指定哪个函数应用于哪个组值,而不是对每个组应用相同的函数。我在这里提供一个非常简单的示例来说明这一点,但实际上我的 groupby 变量有很多值,并且我的函数都是用户定义的并且相当复杂 - 因此解决方案涉及单独选择每个组或应用对所有群体使用相同的功能是不切实际的。 (针对这个非常相似的问题提供了此类答案:how to apply different functions to each group of pandas 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

关于python - Pandas 使用 groupby 为 groupby 变量的每个值应用不同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319338/

相关文章:

python - 如何根据条件替换值?

python - 将 Unittest 输出记录到文本文件

python - 如何线程 Tweepy 流

python - Jupyter python3笔记本无法识别 Pandas

python - 如何在 Excel 中用 "\n"字符串替换换行符

pandas - 使用 groupby 和条件对 Pandas 数据框进行排序

python - django channel 配置不当 : Cannot find 'app' in ASGI_APPLICATION module

python - 将自定义参数发送到 Django 信号

python - Pandas:将日期间隔转换并合并到面板中的虚拟变量中

python - 如何矢量化 Pandas 数据框正向列值搜索