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

Pandas特定模式列排序及实际值与预测值绝对误差计算方案

Pandas 实现方案
import pandas as pd

def process_hierarchy_df(df):
    # 固定商品层级列
    fixed_cols = ["HIERARCHY 1", "HIERARCHY 2", "HIERARCHY 3", "ITEM NUMBER"]
    # 提取所有指标类列
    metric_cols = [col for col in df.columns if col not in fixed_cols]
    
    # 拆分列名生成排序规则
    col_sort_info = []
    for col in metric_cols:
        metric_type, dt_str = col.split("|", 1)
        dt = pd.to_datetime(dt_str)
        # 定义指标排序权重,数值越小优先级越高
        type_weight = {"ACTUAL":0, "FORECAST T-1":1, "FORECAST T-3":2}[metric_type]
        col_sort_info.append((type_weight, dt, col))
    
    # 按指标优先级>日期升序排列指标列
    col_sort_info.sort()
    sorted_metric_cols = [item[2] for item in col_sort_info]
    
    # 完成第一步列重排
    res_df = df[fixed_cols + sorted_metric_cols].copy()
    
    # 第二步计算绝对误差列
    all_dates = sorted({item[1] for item in col_sort_info})
    error_cols = []
    for dt in all_dates:
        dt_str = dt.strftime("%Y-%m-%d")
        actual_col = f"ACTUAL|{dt_str}"
        # 无实际值的日期直接跳过
        if actual_col not in res_df.columns:
            continue
        # 计算T-1误差
        t1_col = f"FORECAST T-1|{dt_str}"
        if t1_col in res_df.columns:
            err_col = f"ABS ERROR T-1 | {dt_str}"
            res_df[err_col] = (res_df[actual_col] - res_df[t1_col]).abs()
            error_cols.append(err_col)
        # 计算T-3误差
        t3_col = f"FORECAST T-3|{dt_str}"
        if t3_col in res_df.columns:
            err_col = f"ABS ERROR T-3 | {dt_str}"
            res_df[err_col] = (res_df[actual_col] - res_df[t3_col]).abs()
            error_cols.append(err_col)
    
    # 误差列放到末尾输出
    final_cols = fixed_cols + sorted_metric_cols + error_cols
    return res_df[final_cols]

# 调用方法
# processed_df = process_hierarchy_df(你的原始DataFrame)

逻辑说明

  • 列排序通过指标权重+日期双重规则实现,自动适配任意数量的指标列
  • 误差计算自动校验对应日期的实际值、预测值列是否存在,不存在直接跳过,兼容列不齐的场景
  • 所有固定列名、指标类型、排序规则都放在函数开头,可根据实际需求快速调整

内容的提问来源于stack exchange,提问作者matt.aurelio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:04