<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_exio12_ext(ext_file, index_col, name, drop_compartment=True, version=None, year=None, iosystem=None, sep=','):
 """ Parse an EXIOBASE version 1 or 2 like extension file into pymrio.Extension EXIOBASE like extensions files are assumed to have two rows which are used as columns multiindex (region and sector) and up to three columns for the row index (see Parameters). For EXIOBASE 3 - extension can be loaded directly with pymrio.load Notes ----- So far this only parses factor of production extensions F (not final demand extensions FY nor coeffiecents S). Parameters ext_file : string or pathlib.Path File to parse index_col : int The number of columns (1 to 3) at the beginning of the file to use as the index. The order of the index_col must be - 1 index column: ['stressor'] - 2 index columns: ['stressor', 'unit'] - 3 index columns: ['stressor', 'compartment', 'unit'] - > 3: everything up to three index columns will be removed name : string Name of the extension drop_compartment : boolean, optional If True (default) removes the compartment from the index. version : string, optional see pymrio.Extension iosystem : string, optional see pymrio.Extension year : string or int see pymrio.Extension sep : string, optional Delimiter to use; default ',' Returns ------- pymrio.Extension with F (and unit if available) """


    ext_file = os.path.abspath(str(ext_file))

    F = pd.read_table(
        ext_file,
        header=[0, 1],
        index_col=list(range(index_col)),
        sep=sep)

    F.columns.names = ['region', 'sector']

    if index_col == 1:
        F.index.names = ['stressor']

    elif index_col == 2:
        F.index.names = ['stressor', 'unit']

    elif index_col == 3:
        F.index.names = ['stressor', 'compartment', 'unit']

    else:
        F.reset_index(level=list(range(3, index_col)),
                      drop=True,
                      inplace=True)
        F.index.names = ['stressor', 'compartment', 'unit']

    unit = None
    if index_col > 1:
        unit = pd.DataFrame(F.iloc[:, 0].
                            reset_index(level='unit').unit)
        F.reset_index(level='unit', drop=True, inplace=True)

    if drop_compartment:
        F.reset_index(level='compartment',
                      drop=True, inplace=True)
        unit.reset_index(level='compartment',
                         drop=True, inplace=True)

    return Extension(name=name,
                     F=F,
                     unit=unit,
                     iosystem=iosystem,
                     version=version,
                     year=year,
                     )