如何将多个函数应用于多个分组列
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中文网其他相关文章!