Pyomo DataPortal读取多列CSV时select参数无法正常选择指定列
问题根源
Pyomo的DataPortal.load方法的select参数预期接收列表类型的列名集合,即使仅选择单列也需要用列表包裹。你直接传入字符串'fips'时,Python会将字符串视为可迭代对象,Pyomo会逐个读取字符串中的字符作为待选列名,因此第一个字符'f'被提取出来当做列名检索,自然匹配不到对应列,触发了报错。
修复方法
仅需将select参数的取值改为列表格式即可,修改后的代码如下:
from pyomo.environ import * model = AbstractModel() model.i = Set() data = DataPortal() data.load(filename='fips.csv', select=['fips'], set=model.i)
拓展说明
如果后续需要同时选取多列加载多维度Set或Param,直接在select对应的列表中添加对应列名即可,无需拆分CSV为多个单文件,示例如下:
# 假设要加载fips和year两列作为二维Set的索引 data.load(filename='fips.csv', select=['fips', 'year'], set=model.ij)
内容的提问来源于stack exchange,提问作者mdbirder3100
相关产品推荐
相关产品推荐

