def reindex(self, target, method=None, level=None, limit=None,<EOL>tolerance=None):
if method is not None:<EOL><INDENT>raise NotImplementedError("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>if level is not None:<EOL><INDENT>raise NotImplementedError("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>if limit is not None:<EOL><INDENT>raise NotImplementedError("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>target = ibase.ensure_index(target)<EOL>if self.equals(target):<EOL><INDENT>indexer = None<EOL>missing = []<EOL><DEDENT>else:<EOL><INDENT>if not target.is_unique:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>indexer, missing = self.get_indexer_non_unique(np.array(target))<EOL><DEDENT>if len(self.codes) and indexer is not None:<EOL><INDENT>new_target = self.take(indexer)<EOL><DEDENT>else:<EOL><INDENT>new_target = target<EOL><DEDENT>if len(missing):<EOL><INDENT>cats = self.categories.get_indexer(target)<EOL>if (cats == -<NUM_LIT:1>).any():<EOL><INDENT>result = Index(np.array(self), name=self.name)<EOL>new_target, indexer, _ = result._reindex_non_unique(<EOL>np.array(target))<EOL><DEDENT>else:<EOL><INDENT>codes = new_target.codes.copy()<EOL>codes[indexer == -<NUM_LIT:1>] = cats[missing]<EOL>new_target = self._create_from_codes(codes)<EOL><DEDENT><DEDENT>new_target = np.asarray(new_target)<EOL>if is_categorical_dtype(target):<EOL><INDENT>new_target = target._shallow_copy(new_target, name=self.name)<EOL><DEDENT>else:<EOL><INDENT>new_target = Index(new_target, name=self.name)<EOL><DEDENT>return new_target, indexer<EOL>
Create index with target's values (move/add/delete values as necessary)

Returns
-------
new_index : pd.Index
    Resulting index
indexer : np.ndarray or None
    Indices of output values in original index