From 9f9adce4f3a15eedc6db5b5b96cd53b85117cfc0 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 8 Sep 2025 15:21:52 +0300 Subject: [PATCH] =?UTF-8?q?get=5Fseries=5Fby=5Fid=5Fand=5Fcolumns=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapters/parsers/monitoring_fuel.py | 17 +++++++++++------ streamlit_app/parsers_ui/monitoring_fuel_ui.py | 11 ++--------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/python_parser/adapters/parsers/monitoring_fuel.py b/python_parser/adapters/parsers/monitoring_fuel.py index 08ddfd2..aa463f7 100644 --- a/python_parser/adapters/parsers/monitoring_fuel.py +++ b/python_parser/adapters/parsers/monitoring_fuel.py @@ -6,7 +6,7 @@ from typing import Dict, Tuple from core.ports import ParserPort from core.schema_utils import register_getter_from_schema, validate_params_with_schema from app.schemas.monitoring_fuel import MonitoringFuelTotalRequest, MonitoringFuelMonthRequest, MonitoringFuelSeriesRequest -from adapters.pconfig import data_to_json +from adapters.pconfig import data_to_json, get_object_by_name # Настройка логгера для модуля logger = logging.getLogger(__name__) @@ -179,7 +179,12 @@ class MonitoringFuelParser(ParserPort): data = row.get('data') if month and data is not None: - data_dict[month] = data + # data уже является DataFrame, поэтому используем его напрямую + if isinstance(data, pd.DataFrame): + data_dict[month] = data + else: + # Если data не DataFrame, пропускаем + logger.warning(f"Данные за месяц {month} не являются DataFrame, пропускаем") return data_dict @@ -295,10 +300,10 @@ class MonitoringFuelParser(ParserPort): # Проверяем, что колонка 'name' существует if 'name' in df_full.columns: - # Применяем функцию get_id_by_name к каждой строке в колонке 'name' - # df_full['id'] = df_full['name'].apply(get_object_by_name) # This line was removed as per new_code - # Временно используем name как id - df_full['id'] = df_full['name'] + # Применяем функцию get_object_by_name к каждой строке в колонке 'name' + df_full['id'] = df_full['name'].apply(get_object_by_name) + # Удаляем строки, где не удалось найти ID + df_full = df_full.dropna(subset=['id']) else: # Если нет колонки name, создаем id из индекса df_full['id'] = df_full.index diff --git a/streamlit_app/parsers_ui/monitoring_fuel_ui.py b/streamlit_app/parsers_ui/monitoring_fuel_ui.py index 00b6f7e..e0f254c 100644 --- a/streamlit_app/parsers_ui/monitoring_fuel_ui.py +++ b/streamlit_app/parsers_ui/monitoring_fuel_ui.py @@ -128,15 +128,8 @@ def render_monitoring_fuel_tab(): # Показываем количество найденных ID st.info(f"📊 Найдено {len(series_data)} объектов") - # Создаем DataFrame для отображения - df_series = pd.DataFrame(series_data).T - df_series.index.name = 'ID объекта' - - st.dataframe(df_series, use_container_width=True) - - # Показываем JSON для отладки - with st.expander("🔍 JSON данные"): - st.json(result) + # Показываем JSON данные + st.json(result) else: st.warning("⚠️ Данные не найдены") else: