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

如何在Azure ML中同时将Pandas DataFrame注册为容器文件与数据集

问题分析与修复方案

原函数无法运行的核心问题包括:

  • 依赖未传入函数的全局变量(X_train、X_test、X_val、results),函数内部无法访问这些变量
  • 全局变量滥用导致作用域混乱
  • 拼接DataFrame时可能存在列名不匹配的问题
  • 未显式指定文件存储路径,可能导致存储位置不符合预期

修正后的函数代码

def register_future_predictions(forecast_val, ws, X_train, X_test, X_val, results):
    # 生成未来日期和预测数据
    last_date = forecast_val['ds'].iloc[-1]
    future_dates = pd.date_range(start=last_date, periods=182, freq='W')
    future_df = pd.DataFrame({'ds': future_dates})

    # 填充未来数据的其他特征列
    for col in X_val.columns:
        if col != 'ds':
            future_df[col] = 0

    future_predictions = results.predict(future_df)

    # 统一拼接用的列名,避免列不匹配
    future_predictions_formatted = future_predictions[['ds', 'yhat']].rename(
        columns={'ds': 'Created on day', 'yhat': 'target_col'}
    )
    # 调整历史数据的列名,和预测数据对齐
    X_train_formatted = X_train.rename(columns={'ds': 'Created on day', 'y': 'target_col'})
    X_test_formatted = X_test.rename(columns={'ds': 'Created on day', 'y': 'target_col'})
    X_val_formatted = X_val.rename(columns={'ds': 'Created on day', 'y': 'target_col'})

    # 拼接所有数据
    reg_data_future = pd.concat(
        [X_train_formatted, X_test_formatted, X_val_formatted, future_predictions_formatted],
        ignore_index=True
    )

    # 获取目标存储容器
    target_datastore = Datastore.get(ws, 'container-where-i-keep-datasets')
    # 显式指定存储路径,确保文件存到预期位置
    target_path = 'full_data/full_data-TEST.parquet'
    # 保存DataFrame到存储容器(Parquet格式)
    reg_data_future.to_parquet(target_datastore.path(target_path).as_mount())
    # 注册为表格数据集
    ds = Dataset.Tabular.from_parquet_files(path=[(target_datastore, target_path)])
    ds.register(workspace=ws, name='full_data-TEST', create_new_version=True)

    return future_predictions, future_df

关键改动说明

  • 移除全局变量:将X_train、X_test、X_val、results作为参数传入函数,避免作用域问题
  • 统一列名:在拼接前将所有DataFrame的列名对齐,防止因列名不一致导致拼接失败
  • 显式存储路径:手动指定文件在容器中的存储路径,便于管理和查找
  • 分步操作:先将DataFrame保存为Parquet文件,再基于该文件注册数据集,比直接用register_pandas_dataframe更可控
  • 版本控制:注册数据集时添加create_new_version=True,支持版本迭代

额外注意事项

  • 确保所有输入的DataFrame(X_train、X_test、X_val)都包含ds和y列,否则需要调整rename逻辑
  • 如果需要保存为CSV格式,将to_parquet替换为to_csv,注册时用Dataset.Tabular.from_delimited_files
  • 确认工作区对象ws已正确初始化,存储容器名称container-where-i-keep-datasets存在且有权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:13:15