es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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 argumento select. Estás tratando de seleccionar la columna llamada fips del archivo fips.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ón data.load.

    ¿Has intentado utilizar el argumento index en lugar del argumento select? Podría valer la pena intentarlo para ver si funciona. Además, podría ser útil revisar la documentación de la función data.load para asegurarte de que la estás utilizando correctamente.

Comments are closed.