Я пытаюсь читать в формате csv с несколькими столбцами, используя функцию Pyomo DataPortal data.load
для инициализации индекса i
но я сталкиваюсь с проблемой, из-за которой я не могу выбрать нужный столбец, используя select
аргумент.
Вот код, который я запускаю.
from pyomo.environ import *
model = AbstractModel()
model.i = Set()
data = DataPortal()
data.load(filename='fips.csv',select='fips',set=model.i)
То fips.csv
файл содержит несколько столбцов с деталями кода FIPS. Я пытаюсь выбрать столбец под названием fips
.
Ошибка, которую я получаю, заключается в следующем.
Model declaration 'f' not found in returned query columns
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Users/cwayner/PycharmProjects/SeniorThesis/pyomo/dataportal/DataPortal.py", line 164, in load
self._data_manager.read()
File "/Users/cwayner/PycharmProjects/SeniorThesis/pyomo/dataportal/plugins/csv_table.py", line 58, in read
self._set_data(tmp[0], tmp[1:])
File "/Users/cwayner/PycharmProjects/SeniorThesis/pyomo/dataportal/TableData.py", line 117, in _set_data
header_index.append(headers.index(str(i)))
ValueError: 'f' is not in list
Что меня смущает в этом, так это то, что эта ошибка включает только первую букву (f
) столбца, который я хочу выбрать (fips
). Я не знаю, что может быть причиной этого в Python.
Я попытался загрузить данные с помощью Pandas, и все заголовки столбцов, похоже, загружались правильно, но я хочу выяснить, почему это не работает с помощью data.load
особенность. Я могу загрузить файл CSV с одним столбцом просто отлично (это простой обходной путь, при котором я разделяю свой CSV на несколько CSV с одним столбцом), но я хотел бы получить select
функция, работающая для многоколоночных CSV, обеспечивает простоту и удобство использования.