You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Pandas DataFrame分组后应用可访问整组的任意函数?

如何对Pandas DataFrame分组后按组应用可访问整个分组的任意函数?

要实现对分组后的每个子DataFrame应用可完整操作该分组的自定义函数,直接使用Pandas的groupby().apply()方法即可,它会将每个分组的完整DataFrame传入你的自定义函数,处理后再合并回原结构。

完整实现代码

import pandas as pd

def arbitrary_function(df):
    """该函数接收单个分组的DataFrame,可对其执行任意Pandas操作"""
    # 示例:给分组添加新列,值为该组data_col的总和
    df['new_col'] = df['data_col'].sum()
    # 返回处理后的分组DataFrame
    return df

# 初始化原始数据
df = pd.DataFrame([[1, 2], [1, 3], [2, 6], [2, 1]], columns=["group_col", "data_col"])

# 分组并应用自定义函数
result_df = df.groupby('group_col').apply(arbitrary_function)

# 重置索引(可选,恢复原始单级索引结构)
result_df = result_df.reset_index(drop=True)

print(result_df)

代码说明

  • df.groupby('group_col'):按指定列对原始DataFrame进行分组,生成GroupBy对象。
  • .apply(arbitrary_function):对每个分组执行自定义函数,每个分组的完整DataFrame会作为参数传入函数,处理后的分组DataFrame会被自动合并为最终结果。
  • reset_index(drop=True):可选操作,apply返回的结果默认保留多级索引,执行此步骤可恢复到和原始数据一致的单级索引结构。

运行结果

执行代码后输出与预期完全一致:

group_col  data_col  new_col
0          1         2        5
1          1         3        5
2          2         6        7
3          2         1        7

通用性验证

该方案完全满足要求:

  1. 未使用lambda函数,直接调用自定义命名函数。
  2. 自定义函数接收完整的分组DataFrame,可执行任意Pandas操作——比如计算复杂统计量、多列联动处理、分组过滤或结构重塑等,操作逻辑和处理普通DataFrame完全一致。

内容的提问来源于stack exchange,提问作者Atomic Tripod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:26:24