содержит запятую-разделитель тысяч (например, "1,346"), которую int() не может проанализировать.
Среда:
- Windows 10, Python 3.11.9
- pandas 2.2.x
- 0.6.10 (также воспроизводится последней версией по состоянию на ноябрь 2025 г.)
Код: Выделить всё
entsoe-py - Локальный стандарт — 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 возможности очистить это или запросить другой числовой формат.Код: Выделить всё
1,346 - Ошибка дублирования индекса, похоже, возникает из-за того, что несколько используют одну и ту же комбинацию (метка времени, позиция, категория) в полезных данных ZIP (не мой основной блокировщик, но упоминаю для полноты).
- Есть ли в entsoe-py рекомендуемый способ обработки разделителей языковых стандартов/тысяч в
?- например, документированный флаг или известная версия, которая не анализирует
с помощью int() напрямую?
- например, документированный флаг или известная версия, которая не анализирует
- Если нет, то какой самый простой обходной путь?
- Monkey-исправьте синтаксический анализатор, чтобы удалить запятые перед int()?
- Предварительно загрузите ZIP, очистите XML (замените , в
), а затем вызвать внутренний синтаксический анализатор? - Еще один подход, который мне не хватает?
- Есть ли какие-либо рекомендации относительно "Индекс содержит повторяющиеся записи" при разбивке по ['position','category']?
- Является ли дедупликация по (['timestamp','position','category']) с первым правильным подходом или есть лучшая семантическая группировка?
Подробнее здесь: https://stackoverflow.com/questions/798 ... lid-litera