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

如何通过CSV中的变量重复执行Jupyter Notebook?

基于Papermill复用Jupyter Notebook并动态传入参数方案

核心场景

  • 现有Jupyter Notebook包含依赖event对象的代码块,后续多个单元格均依赖该对象
  • 存在CSV映射文件,存储City、ServiceNow ID与设备的对应关系
  • 目标:通过Papermill实现Notebook复用,每次执行时动态传入不同参数

步骤1:改造Notebook,标记可参数化单元格

将原硬编码的event定义单元格,修改为支持Papermill参数注入的格式:

  1. 在单元格开头添加# parameters注释(Papermill会识别此标记,将下方变量作为可传入参数)
  2. 将硬编码值替换为变量,再传入MyEvent构造函数
# parameters
city = "CAN"
servicenow_id = "123456"
devices = ["can-1-server-1"]
workflow_name = "PYTHON_WORKER"

event = MyEvent({
    "city": city,
    "servicenow_id": servicenow_id,
    "devices": devices,
    "workflow_name": workflow_name,
})

步骤2:读取CSV映射,批量执行Notebook

编写Python脚本读取CSV文件,遍历每一行的参数组合,调用Papermill执行原Notebook并生成带参数的输出文件:

import papermill as pm
import pandas as pd

# 读取CSV映射文件(替换为你的CSV路径)
df = pd.read_csv('city_device_mapping.csv')

# 遍历CSV每行,批量执行Notebook
for idx, row in df.iterrows():
    # 从CSV行提取参数(需与CSV列名匹配)
    params = {
        "city": row['City'],
        "servicenow_id": row['ServiceNow ID'],
        "devices": [row['设备']]  # 若CSV中设备为多值(如逗号分隔),可改为row['设备'].split(',')
    }
    
    # 执行Notebook,生成带参数的输出文件
    pm.execute_notebook(
        input_path='你的原Notebook路径.ipynb',
        output_path=f'执行结果_{row["City"]}_{row["ServiceNow ID"]}.ipynb',
        parameters=params
    )

步骤3:验证参数传递有效性

在原Notebook中添加一个验证单元格,确认参数是否正确传入event对象:

# 验证参数是否正确注入
print("当前event对象参数:")
print(event.__dict__)  # 或根据MyEvent类的结构,打印对应属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:00:11