Azure ML Workbench数据流能否引用多数据源?笔记本逻辑如何集成?
解决Azure ML Workbench数据流中跨数据源列筛选的问题
我来帮你拆解这个问题,分两部分给出实用解决方案:
一、关于数据流表达式引用多数据源的说明
首先明确:Azure ML Workbench的数据准备默认可视化转换的表达式编辑器,没办法直接在单个转换步骤里引用其他独立数据源的内容——因为每个转换都是针对当前正在处理的数据集设计的。不过咱们可以通过间接方式实现跨数据源的逻辑,下面说具体操作方案。
二、把笔记本逻辑整合到数据流的具体步骤
你的需求是从df的列中,筛选出列名存在于df_op的Drug Name值中的列,这个逻辑可以通过两种方式落地:
方法1:参数+筛选列转换(推荐,可视化操作更直观)
先从
df_op提取唯一药物名称
打开df_op数据集,添加一个去重转换,只保留Drug Name列,得到仅含唯一药物名称的数据集。
接着把这个去重后的名称列表导出为项目参数:在Workbench的参数面板里,新建一个字符串数组类型的参数(比如命名为valid_drug_columns),把去重后的Drug Name值批量填入。在
df数据流中用参数筛选列
回到df数据集,添加一个筛选列转换,在表达式编辑器中输入:column.name in @valid_drug_columns这个表达式会自动筛选出列名在参数列表中的所有列,完美实现你笔记本里
sum_op_columns的逻辑。
方法2:自定义Python脚本转换(灵活度更高)
如果你的逻辑后续有扩展需求,可以直接把笔记本代码迁移到数据流的Python脚本转换中:
- 在
df的数据流里,添加一个运行Python脚本的转换。 - 在脚本中加载
df_op数据集(确保它已在你的Workbench项目中),执行筛选逻辑:import pandas as pd # 加载df_op数据集,替换为你实际的文件路径 df_op = pd.read_csv('../data/df_op.csv') valid_drugs = df_op['Drug Name'].unique() # 执行列筛选逻辑 all_columns = df.columns sum_columns = [col for col in all_columns if col not in ['NPI', 'Gender', 'State', 'Credentials', 'Specialty']] sum_op_columns = list(set(sum_columns) & set(valid_drugs)) df = df[sum_op_columns] - 运行脚本后,输出的数据集就是你需要的结果。
内容的提问来源于stack exchange,提问作者daftexcogitator
相关产品推荐
相关产品推荐

