Pyomo DataPortal Nie Čítania v Multi-Stĺpca CSV Správne

0

Otázka

Snažím sa čítať v csv s viacerými stĺpcami pomocou Pyomo DataPortal funkcia data.load ak chcete inicializovať index i ale som sa dostanete do problému, pri ktorom sa nedá vyberte stĺpec chcem pomocou select argument.

Tu je kód som beží.

from pyomo.environ import *
model = AbstractModel()
model.i = Set()

data = DataPortal()
data.load(filename='fips.csv',select='fips',set=model.i)

Na fips.csv súbor má viac stĺpcov s FIPS kód podrobné údaje. Snažím sa, vyberte stĺpec s názvom fips.

Chybu som dostať, je nasledujúci.

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

Čo je mätúce o tejto mňa je, že táto chyba sa zahŕňa len prvé písmeno (f) stĺpec, ktorý som chcete vybrať (fips). Neviem, čo môže byť príčinou tohto v jazyku Python.

Snažil som sa načítanie údajov pomocou Pandy a všetky hlavičky stĺpcov sa zdalo byť nakladanie správne, ale chcem sa zistiť, prečo to nefunguje pomocou data.load funkcia. Som schopná načítať v jednom stĺpci CSV v pohode (čo je jednoduché riešenie, kde som rozrazila CSV do viacerých jeden stĺpec Csvš), ale ja by som chcel získať select funkcia pracuje pre multi-stĺpca Csvš pre jednoduchosť a jednoduchosť použitia.

csv pyomo python
2021-11-18 16:04:59
1

Najlepšiu odpoveď

0

Ak sa pozriete pozorne na dokumentácia pre select to hovorí, že argument, ktorý by mal byť zoznam alebo n-tice. Tak, vnútorne sa, že funkcia, argument je "iterated". A, struny sú iterable tak prvý "f" je odlepené.

Riešenie: Ak je len jeden názov stĺpca, dať to do 1-prvok zoznamu alebo 1-prvok n-tice. Poznámka: budete potrebovať koncové comma v 1-prvok n-tice, alebo je to len interpretovať ako zátvorky. Skúste toto:

data.load(filename='fips.csv',select=('fips',),set=model.i)

Tiež v tej istej časti dokumentácie, tam je poznámka o vkladaní viacerých parametrov naraz, čo môže byť užitočné pre vás.

2021-11-18 17:18:05

Ďakujem moc! Neviem, čo by som robila bez tohto spoločenstva.
Claire Wayner

Veľký. Ako som už spomenul, aby ste v iných post ste mali, to odpovedal na otázku, prosím, kliknite na "check mark" vedľa odpoveď na close to out (a daj mi moje skromné bodov...lol)
AirSquid

OK, možno som hovoril príliš skoro. Keď sa váš kód práve teraz, som narazil na rôzne chyby. IndexError: string index out of range. Máte akékoľvek myšlienky o tom, čo sa deje? Stĺpec údajov rám snažím sa čítať, má celé, nie reťazec.
Claire Wayner

Pochybujem, že chyba je, že prichádza z zaťaženia prevádzky. Skontrolujte si číslo riadku, atď. Tlač nastaviť po tom, ako bolo naložené. Ak to nepomôže a ste uviazol whittle to na minime reprodukovateľné príklad, spolu s pár riadkov zdroj údajov tak, že chyba môže byť reprodukované a uverejniť novú otázku.
AirSquid

Dobre, možno tam je problém s týmto prístupom celkovo. Len som vŕtal s "vyberte" príkaz a nemôžem sa dostať ho, aby naˇ individuálne nastavené správne. To môže urobiť indexovaného parameter ako v dokumentácii, ale nemôžem sa dostať do práce na súbor. Možno budete chcieť, aby zvážila rôzne dátové štruktúry, ktorá je viac predvídateľné.
AirSquid

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................