Staram się czytać w formacie csv z kilkoma kolumnami, za pomocą funkcji Pyomo DataPortal data.load
do inicjalizacji indeksu i
ale spotykam się z problemem, z którym nie mogę wybrać odpowiednią kolumnę za pomocą select
argument.
Oto kod, który uruchamiam.
from pyomo.environ import *
model = AbstractModel()
model.i = Set()
data = DataPortal()
data.load(filename='fips.csv',select='fips',set=model.i)
To fips.csv
plik zawiera kilka kolumn z częściami kodu FIPS. Próbuję wybrać kolumnę o nazwie fips
.
Błąd, który mam, jest następująca.
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
Co mi przeszkadza w tym, to to, że ten błąd obejmuje tylko pierwszą literę (f
) kolumny, który chcę wybrać (fips
). Nie wiem, co może być przyczyną tego w Pythonie.
Próbowałem przesłać dane za pomocą Pandas, i wszystkie nagłówki kolumn, wygląda na to, uruchamiały się poprawnie, ale chcę dowiedzieć się, dlaczego to nie działa z pomocą data.load
cecha. Mogę przesłać plik CSV z jedną kolumną po prostu świetnie (to jest proste obejście, w którym dzielę się swoją CSV na kilka CSV z jedną kolumną), ale chciałbym uzyskać select
funkcja działająca na многоколоночных CSV, zapewnia łatwość i wygodę użytkowania.