首页 > 后端开发 > Python教程 > 如何将多个函数应用于 Pandas GroupBy 中的多个列?

如何将多个函数应用于 Pandas GroupBy 中的多个列?

Barbara Streisand
发布: 2024-12-08 05:53:10
原创
511 人浏览过

How to Apply Multiple Functions to Multiple Columns in Pandas GroupBy?

如何将多个函数应用于多个分组列

Pandas 中的 Groupby 操作允许基于特定列或键聚合数据。但是,在处理复杂数据集时,可能需要对分组数据中的不同列执行多个操作。

使用字典进行系列分组

对于Series groupby对象,可以使用字典来指定多个函数并输出列名,如下所示:

grouped['D'].agg({'result1' : np.sum,
   .....:                   'result2' : np.mean})
登录后复制

这个但是,该方法不适用于 DataFrame groupby 对象,因为它期望字典键代表应用函数的列名称。

带有 Apply 的自定义函数

要解决由于这个限制,您可以利用 apply 方法,该方法将 DataFrame 隐式传递给应用函数。通过定义自定义函数并返回 Series 或多索引 Series,您可以对每个组中的多个列执行多项操作:

返回 Series:

def f(x):
    d = {}
    d['a_sum'] = x['a'].sum()
    d['a_max'] = x['a'].max()
    d['b_mean'] = x['b'].mean()
    d['c_d_prodsum'] = (x['c'] * x['d']).sum()
    return pd.Series(d, index=['a_sum', 'a_max', 'b_mean', 'c_d_prodsum'])

df.groupby('group').apply(f)
登录后复制

使用 MultiIndex 返回一个系列:

def f_mi(x):
        d = []
        d.append(x['a'].sum())
        d.append(x['a'].max())
        d.append(x['b'].mean())
        d.append((x['c'] * x['d']).sum())
        return pd.Series(d, index=[['a', 'a', 'b', 'c_d'], 
                                   ['sum', 'max', 'mean', 'prodsum']])

df.groupby('group').apply(f_mi)
登录后复制

这种方法提供了对分组数据执行复杂聚合的灵活方式,允许对每个组内的多个列进行多种操作。

以上是如何将多个函数应用于 Pandas GroupBy 中的多个列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板