我想使用 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.mean
、np.max
、np.min
关于python - Pandas 使用 groupby 为 groupby 变量的每个值应用不同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319338/