Remap **indexers from obj.coords.
    If indexer is an instance of DataArray and it has coordinate, then this
    coordinate will be attached to pos_indexers.

    Returns
    -------
    pos_indexers: Same type of indexers.
        np.ndarray or Variable or DataArra
    new_indexes: mapping of new dimensional-coordinate.

def remap_label_indexers(obj, indexers=None, method=None, tolerance=None,
                         **indexers_kwargs):
    """
    Remap **indexers from obj.coords.
    If indexer is an instance of DataArray and it has coordinate, then this
    coordinate will be attached to pos_indexers.

    Returns
    -------
    pos_indexers: Same type of indexers.
        np.ndarray or Variable or DataArra
    new_indexes: mapping of new dimensional-coordinate.
    """
    from .dataarray import DataArray
    indexers = either_dict_or_kwargs(
        indexers, indexers_kwargs, 'remap_label_indexers')

    v_indexers = {k: v.variable.data if isinstance(v, DataArray) else v
                  for k, v in indexers.items()}

    pos_indexers, new_indexes = indexing.remap_label_indexers(
        obj, v_indexers, method=method, tolerance=tolerance
    )
    # attach indexer's coordinate to pos_indexers
    for k, v in indexers.items():
        if isinstance(v, Variable):
            pos_indexers[k] = Variable(v.dims, pos_indexers[k])
        elif isinstance(v, DataArray):
            # drop coordinates found in indexers since .sel() already
            # ensures alignments
            coords = OrderedDict((k, v) for k, v in v._coords.items()
                                 if k not in indexers)
            pos_indexers[k] = DataArray(pos_indexers[k],
                                        coords=coords, dims=v.dims)
    return pos_indexers, new_indexes