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

Pandas分组聚合时如何自定义列名?实现可定制化聚合函数

可定制化DataFrame日度聚合实现方案

要实现无硬编码的可定制化聚合,核心是动态构建聚合规则字典,将common_cols、w_params和operation三个列表的逻辑对应起来,具体实现如下:

1. 明确参数逻辑匹配要求

确保三个列表的对应关系准确:

  • common_cols:需保留原名的分组/标识列(如region_id、name等,分组后每组内值唯一)
  • w_params:需执行聚合计算的数值列(如t2m、d2m、tp)
  • operation:与w_params一一对应的聚合方法(需是pandas支持的聚合函数名,如mean、sum、max)

2. 编写可定制化agg_daily函数

import pandas as pd

def agg_daily(df, w_params, operation, common_cols):
    # 校验参数长度匹配
    if len(w_params) != len(operation):
        raise ValueError("w_params和operation的长度必须一致")
    
    # 构建带列名映射的聚合规则
    agg_rules = {}
    # 处理common_cols:保留原名,用first确保取唯一值
    for col in common_cols:
        agg_rules[col] = ('first', col)
    # 处理w_params:生成带操作标识的新列名
    for col, op in zip(w_params, operation):
        agg_rules[col] = (op, f"{col}_{op}")
    
    # 执行分组聚合(假设按日期+common_cols分组,可根据实际调整分组键)
    aggregated_df = df.groupby(['date'] + common_cols).agg(agg_rules).reset_index()
    
    # 移除多级列索引(聚合后默认生成多级索引,这里扁平化)
    if isinstance(aggregated_df.columns, pd.MultiIndex):
        aggregated_df.columns = aggregated_df.columns.droplevel(0)
    
    return aggregated_df

3. 使用示例

# 模拟测试数据
data = {
    'date': pd.date_range(start='2024-01-01', periods=10, freq='H'),
    'region_id': [1,1,1,2,2,2,1,1,2,2],
    'name': ['A','A','A','B','B','B','A','A','B','B'],
    'parent': [0,0,0,1,1,1,0,0,1,1],
    'parent_name': ['Root','Root','Root','A','A','A','Root','Root','A','A'],
    't2m': [10,12,11,15,16,14,13,12,15,16],
    'd2m': [8,9,8,12,13,11,10,9,12,13],
    'tp': [0,0.2,0,0.1,0,0.3,0,0.1,0,0.2]
}
df = pd.DataFrame(data)

# 定义自定义参数
common_cols = ['region_id', 'name', 'parent', 'parent_name']
w_params = ['t2m', 'd2m', 'tp']
operation = ['mean', 'max', 'sum']

# 执行日度聚合
daily_result = agg_daily(df, w_params, operation, common_cols)
print(daily_result)

关键细节说明

  • 分组逻辑:代码默认按date+common_cols分组做日度聚合,若仅需按common_cols分组,可删除['date']部分
  • 列名控制:通过(聚合方法, 新列名)的元组格式,直接在聚合阶段完成列名定义,无需后续额外重命名
  • 参数校验:增加长度匹配检查,避免因参数不匹配导致的运行错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:52:31