from pydantic import ValidationError from server.backend.schemas.pydantic import ExcelDigitalization,settings,Translit from server.backend.api.excel_prices import processing import re import pandas as pd def process_sheet(df,real_arti: int): # выбираем нужные колонки по индексам df = df.iloc[:, [real_arti]].copy() df.dropna(inplace=True) # складываем суммы df = df.iloc[:, [0]] df.columns = ['arti'] # нормализация df['arti'] = df['arti'].replace(Translit.TRANSLIT, regex=True) df['arti'] = df['arti'].astype(str).str.upper().str.extract(f'({settings.PATTERN})') # группировка print(df) df = processing(df) validated_rows, errors = [], [] for i, row in df.iterrows(): try: validated_rows.append(ExcelDigitalization(**row.to_dict())) except ValidationError as e: errors.append((i, e.errors())) if errors: raise Exception("There are some errors with validation in digitalization", errors) df_validated = pd.DataFrame([r.model_dump() for r in validated_rows]) return df_validated def evaluating(df, real_arti:int, types:str): validated_rows_1 = process_sheet(df, real_arti=real_arti) # номера столбцов от озона validated_rows_1.to_excel(f"./excel_files/{types}.xlsx") return validated_rows_1