#python #python-3.x #pandas #pydantic
Вопрос:
Сейчас я перебираю фрейм данных из 700 тысяч строк, но я уверен, что есть лучший способ. Насколько я видел, в документации Pydantic нет четких инструкций для этого.
class Row(BaseModel): SourceSiteUrl: str SourceLibraryUrl: str @validator('SourceLibraryUrl') def max_lenth(cls, v): if len(v) != 38: raise ValueError('Invalid length') def validate(): df = pd.DataFrame({SourceSiteUrl: [], SourceLibraryUrl: []}) errors = {} for r in df.itertuples(): try: Row( SourceSiteUrl = r.SourceSiteUrl, SourceLibraryUrl = r.SourceLibraryUrl, ) except ValidationError as e: r = str(e).replace('n', '') r = re.sub('^[0-9]', '', r).strip() if r not in errors.keys(): errors[r] = 0 else: errors[r] = 1 if not errors: logging.info(f'{process_name}: Validated without exceptions') else: logging.info(f'{process_name}: {errors}') return
Комментарии:
1. Это действительно вопрос о pydantic? Было бы по-другому, если бы вы подтвердили это без pydantic? Что не так с вашим нынешним подходом? Это отнимает слишком много времени? Или слишком много памяти?