Entsoe-py query_imbalance_(prices|volumes) schlägt mit ValueError: invalid literal for int(): '1,346' in Parser fehl – ​Python

Python-Programme
Anonymous
 Entsoe-py query_imbalance_(prices|volumes) schlägt mit ValueError: invalid literal for int(): '1,346' in Parser fehl – ​

Post by Anonymous »

Ich rufe das ENTSO-E-Ungleichgewicht Preise/Volumen mit entsoe-py ab und stoße auf einen Parser-Absturz, weil das Feld
ein Tausendertrennzeichen (z. B. „1,346“) enthält, das int() nicht analysieren kann.
Umgebung:
  • Windows 10, Python 3.11.9
  • Pandas 2.2.x
  • Code: Select all

    entsoe-py
    0.6.10 (auch spätestens ab November 2025 reproduziert)
  • Gebietsschema ist en-GB; Anfragen von der offiziellen Transparency API über EntsoePandasClient
Minimale Reproduktion:

Code: Select all

import keyring
import pandas as pd
from entsoe import EntsoePandasClient

ENTSOE_TOKEN = keyring.get_password("baringa-entsoe", "token")
client = EntsoePandasClient(api_key=ENTSOE_TOKEN)

start = pd.Timestamp('2024-01-01 00:00:00', tz='UTC')
end   = pd.Timestamp('2024-12-31 23:59:59', tz='UTC')

# France example (happens on other countries/years too)
df = client.query_imbalance_volumes(country_code='FR', start=start, end=end)
print(df.shape)
Traceback (Auszug):

Code: Select all

File ...\entsoe\parsers.py", line 665, in _parse_imbalance_volumes_timeseries
position = int(point.find('position').text)
ValueError: invalid literal for int() with base 10: '1,346'
Ich sehe auch gelegentlich einen Folgefehler, wenn das oben Genannte nicht passiert:

Code: Select all

ValueError: Index contains duplicate entries, cannot reshape
# from df.set_index(['position','category']).unstack()
Was ich versucht habe / Hinweise
  • Reinigungsmenge post-hoc hilft nicht (es kommt zu einem Absturz im Parser, bevor ich einen Datenrahmen erhalte).
  • Zeitstempel sind tz='UTC'; Der Wechsel zu Etc/UTC ändert das Verhalten nicht.
  • Es sieht so aus, als ob das von der API zurückgegebene XML manchmal
    mit Kommas enthält (

    Code: Select all

    1,346
    ) anstelle einer einfachen Ganzzahl. Ich kann in entsoe-py keine Option sehen, um dies zu bereinigen oder ein anderes Zahlenformat anzufordern.
  • Der Fehler beim doppelten Index scheint von mehreren zu stammen, die dieselbe (Zeitstempel, Position, Kategorie)-Kombination in der ZIP-Nutzlast teilen (nicht mein Hauptblocker, aber der Vollständigkeit halber erwähnt).
Fragen
  • Gibt es in entsoe-py eine empfohlene Möglichkeit, locale/tausender-Trennzeichen in
    zu verarbeiten?
    • z. B. ein dokumentiertes Flag oder eine bekannte Version, die
      nicht mit int() analysiert direkt?
  • Wenn nicht, was ist die sauberste Problemumgehung?
    • Monkey-Patch des Parsers, um Kommas vor int() zu entfernen?
    • Laden Sie die ZIP-Datei vorab herunter, bereinigen Sie XML (ersetzen Sie , in
      ), dann den internen Parser aufrufen?
    • Noch ein Ansatz, der mir fehlt?
  • Irgendwelche Hinweise zu „Index enthält doppelte Einträge“ beim Entstapeln für ['position','category']?
    • Ist die Deduplizierung nach (['timestamp','position','category']) with first der richtige Ansatz oder gibt es eine bessere semantische Gruppierung?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post