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

Python循环处理多指标时间序列时自动重命名DataFrame的方法

处理方案

推荐实现方式:字典存储结果

这种方式不会污染全局命名空间,后续批量操作、代码调试都更方便,是Python处理这类场景的最佳实践。

完整代码示例

# 1. 定义你所有的15个指标类别
categories = ['sales', 'construction'] # 补全剩余13个指标即可

# 2. 封装你现有的处理逻辑为可复用函数
def process_single_category(cat_name, original_df):
    # 筛选当前指标对应的列
    df_m = original_df.loc[:, original_df.columns.str.contains(f'{cat_name}.*Monthly|Monthly.*{cat_name}')]
    df_ytd = original_df.loc[:, original_df.columns.str.contains(f'{cat_name}.*YTD|YTD.*{cat_name}')]

    # 沿用你已验证可用的转换逻辑
    df_ytd = df_ytd.fillna(method='bfill', limit=1)
    df_ytd.loc[df_ytd.index.month.isin([1,2]), :] = df_ytd / 2
    df_ytd.columns = df_ytd.columns.str.replace(', YTD', '')
    df_m.columns = df_m.columns.str.replace('YTD, ', '').str.replace(', Monthly', '')
    df_m = df_m.fillna(df_ytd)
    df_yoy = df_m.pct_change(periods=12) * 100

    return df_m, df_yoy

# 3. 循环处理所有指标,存入字典
result_store = {}
for cat in categories:
    single_m, single_yoy = process_single_category(cat, df)
    result_store[f'{cat}_m'] = single_m
    result_store[f'{cat}_yoy'] = single_yoy

结果调用

处理完成后,通过result_store['sales_m']、result_store['sales_yoy']即可访问对应指标的处理结果。


可选实现:直接生成独立变量

如果你确实需要直接用sales_m、construction_yoy这类变量名访问结果,可在上述代码最后添加一行将字典内容同步到全局命名空间:

globals().update(result_store)

注意:该方式不推荐,动态生成的变量没有IDE代码提示,容易出现拼写错误、变量冲突等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:15:04