将多个函数应用于多个分组列
处理分组数据时,Pandas 中的 groupby 方法允许您同时应用多个函数一本字典。但是,这种方法仅适用于 Series groupby 对象。
如果您有一个 groupby DataFrame 并希望将函数应用于多个列,那么您将面临将列名称指定为字典中的键的挑战。此外,某些函数可能依赖于其他列,使得使用 agg 方法变得复杂。
以下是可用的选项:
使用 apply 方法
apply 方法隐式地将 DataFrame 传递给应用函数。这允许您同时处理多个列。使用字典将列名称映射到聚合函数:
df.groupby('group').apply({'a': ['sum', 'max'], 'b': 'mean', 'c': 'sum', 'd': lambda x: x.max() - x.min()})
或者,您可以使用自定义函数返回一系列所有聚合:
def f(x): return pd.Series({'a_sum': x['a'].sum(), 'a_max': x['a'].max(), 'b_mean': x['b'].mean(), 'c_d_prodsum': (x['c'] * x['d']).sum()}) df.groupby('group').apply(f)
限制和替代方案
总之,虽然 Pandas 没有内置方法将多个函数应用于 groupby DataFrame 中的特定列,但 apply 方法提供了适用于大多数场景的灵活且可定制的解决方案。对于涉及多个列和依赖项的复杂聚合,您可能需要探索替代方法或手动迭代分组对象。
以上是如何将多个函数应用于 Pandas GroupBy DataFrame 中的多个列?的详细内容。更多信息请关注PHP中文网其他相关文章!