def append(self, other):
if not isinstance(other, (list, tuple)):<EOL><INDENT>other = [other]<EOL><DEDENT>if all((isinstance(o, MultiIndex) and o.nlevels >= self.nlevels)<EOL>for o in other):<EOL><INDENT>arrays = []<EOL>for i in range(self.nlevels):<EOL><INDENT>label = self._get_level_values(i)<EOL>appended = [o._get_level_values(i) for o in other]<EOL>arrays.append(label.append(appended))<EOL><DEDENT>return MultiIndex.from_arrays(arrays, names=self.names)<EOL><DEDENT>to_concat = (self.values, ) + tuple(k._values for k in other)<EOL>new_tuples = np.concatenate(to_concat)<EOL>try:<EOL><INDENT>return MultiIndex.from_tuples(new_tuples, names=self.names)<EOL><DEDENT>except (TypeError, IndexError):<EOL><INDENT>return Index(new_tuples)<EOL><DEDENT>
Append a collection of Index options together

Parameters
----------
other : Index or list/tuple of indices

Returns
-------
appended : Index