Entsoe-py query_imbalance_(prices|volumes) завершается с ошибкой ValueError: недопустимый литерал для int(): '1,346' в пPython

Программы на Python
Ответить
Anonymous
 Entsoe-py query_imbalance_(prices|volumes) завершается с ошибкой ValueError: недопустимый литерал для int(): '1,346' в п

Сообщение Anonymous »

Я получаю данные дисбаланса цены/объемы ENTSO-E с помощью entsoe-py и сталкиваюсь с сбоем синтаксического анализатора, поскольку поле
содержит запятую-разделитель тысяч (например, "1,346"), которую int() не может проанализировать.
Среда:
  • Windows 10, Python 3.11.9
  • pandas 2.2.x
  • Код: Выделить всё

    entsoe-py
    0.6.10 (также воспроизводится последней версией по состоянию на ноябрь 2025 г.)
  • Локальный стандарт — EN-GB; запросы, сделанные из официального API прозрачности через EntsoePandasClient
Минимальное воспроизведение:

Код: Выделить всё

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)
Обратная трассировка (отрывок):

Код: Выделить всё

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'
Я также иногда вижу следующую ошибку, когда вышеуказанное не происходит:

Код: Выделить всё

ValueError: Index contains duplicate entries, cannot reshape
# from df.set_index(['position','category']).unstack()
Что я пробовал / Примечания
  • Очистка количества постфактум не помогает (сбой происходит внутри синтаксического анализатора до того, как я получаю кадр данных).
  • Временные метки — tz='UTC'; переключение на Etc/UTC не меняет поведение.
  • Похоже, что XML, возвращаемый API, иногда включает
    с запятыми (), а не простое целое число. Я не вижу в entsoe-py возможности очистить это или запросить другой числовой формат.
  • Ошибка дублирования индекса, похоже, возникает из-за того, что несколько используют одну и ту же комбинацию (метка времени, позиция, категория) в полезных данных ZIP (не мой основной блокировщик, но упоминаю для полноты).
Вопросы
  • Есть ли в entsoe-py рекомендуемый способ обработки разделителей языковых стандартов/тысяч в
    ?
    • например, документированный флаг или известная версия, которая не анализирует
      с помощью int() напрямую?
  • Если нет, то какой самый простой обходной путь?
    • Monkey-исправьте синтаксический анализатор, чтобы удалить запятые перед int()?
    • Предварительно загрузите ZIP, очистите XML (замените , в
      ), а затем вызвать внутренний синтаксический анализатор?
    • Еще один подход, который мне не хватает?
  • Есть ли какие-либо рекомендации относительно "Индекс содержит повторяющиеся записи" при разбивке по ['position','category']?
    • Является ли дедупликация по (['timestamp','position','category']) с первым правильным подходом или есть лучшая семантическая группировка?


Подробнее здесь: https://stackoverflow.com/questions/798 ... lid-litera
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»