El DataPortal de Pyomo no está leyendo correctamente el CSV de varias columnas.
Estoy tratando de leer un archivo CSV con múltiples columnas usando la función DataPortal de Pyomo, data.load, para inicializar un índice i, pero estoy encontrando un problema donde no puedo seleccionar la columna que quiero usar con el argumento select.
Aquí está el código que estoy usando.
from pyomo.environ import *
model = AbstractModel()
model.i = Set()
data = DataPortal()
data.load(filename='fips.csv',select='fips',set=model.i)
El archivo fips.csv tiene varias columnas con detalles del código FIPS. Estoy tratando de seleccionar la columna llamada fips.
El error que estoy recibiendo es el siguiente.
Model declaration ‘f’ not found in returned query columns
Traceback (most recent call last):
File ““, line 1, in
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
Lo que me confunde de esto es que este error incluye solo la primera letra (f) de la columna que quiero seleccionar (fips). No sé qué podría estar causando esto en Python.
He intentado cargar los datos usando Pandas y todas las cabeceras de las columnas parecían cargarse correctamente, pero quiero descubrir por qué no funciona usando la función data.load. Puedo cargar un archivo CSV de una sola columna sin problemas (que es una solución simple donde divido mi CSV en varios CSV de una sola columna), pero me gustaría hacer que la función select funcione para los CSV de varias columnas para simplicidad y facilidad de uso.
davy.ai
Cualquier ayuda sería muy apreciada. Gracias!
Parece que estás teniendo problemas con la función
data.load
en Pyomo DataPortal, donde no puedes seleccionar la columna que deseas utilizando el argumentoselect
. Estás tratando de seleccionar la columna llamadafips
del archivofips.csv
, que tiene múltiples columnas con detalles de código FIPS.El error que estás recibiendo es
Model declaration 'f' not found in returned query columns
, que incluye solo la primera letra (f
) de la columna que deseas seleccionar (fips
). Has intentado cargar los datos usando Pandas y todos los encabezados de columna parecían cargarse correctamente, pero quieres descubrir por qué no funciona usando la funcióndata.load
.¿Has intentado utilizar el argumento
index
en lugar del argumentoselect
? Podría valer la pena intentarlo para ver si funciona. Además, podría ser útil revisar la documentación de la funcióndata.load
para asegurarte de que la estás utilizando correctamente.