def METHOD_NAME(
    cls,
    data_frame: pandas.DataFrame,
    schema: ImportThermoMLDataSchema,
    n_processes,
) -> pandas.DataFrame:
    if schema.cache_file_name is not None and os.path.isfile(
        schema.cache_file_name
    ):
        cached_data = pandas.read_csv(schema.cache_file_name)
        return cached_data
    with temporarily_change_directory():
        logger.debug("Downloading archive data")
        cls._download_data(schema)
        # Get the names of the extracted files
        file_names = glob.glob(os.path.join("10.*", "*.xml"))
        logger.debug("Processing archives")
        with Pool(processes=n_processes) as pool:
            data_frames = [*pool.imap(cls._process_archive, file_names)]
        pool.join()
    logger.debug("Joining archives")
    thermoml_data_frame = pandas.concat(data_frames, ignore_index=True, sort=False)
    for header in thermoml_data_frame:
        if header.find(" Uncertainty ") >= 0 and not schema.retain_uncertainties:
            thermoml_data_frame = thermoml_data_frame.drop(header, axis=1)
    data_frame = pandas.concat(
        [data_frame, thermoml_data_frame], ignore_index=True, sort=False
    )
    if schema.cache_file_name is not None:
        data_frame.to_csv(schema.cache_file_name, index=False)
    return data_frame