def _getitem_iterable(self, key, axis=None):
if axis is None:<EOL><INDENT>axis = self.axis or <NUM_LIT:0><EOL><DEDENT>self._validate_key(key, axis)<EOL>labels = self.obj._get_axis(axis)<EOL>if com.is_bool_indexer(key):<EOL><INDENT>key = check_bool_indexer(labels, key)<EOL>inds, = key.nonzero()<EOL>return self.obj._take(inds, axis=axis)<EOL><DEDENT>else:<EOL><INDENT>keyarr, indexer = self._get_listlike_indexer(key, axis,<EOL>raise_missing=False)<EOL>return self.obj._reindex_with_indexers({axis: [keyarr, indexer]},<EOL>copy=True, allow_dups=True)<EOL><DEDENT>
Index current object with an an iterable key (which can be a boolean
indexer, or a collection of keys).

Parameters
----------
key : iterable
    Target labels, or boolean indexer
axis: int, default None
    Dimension on which the indexing is being made

Raises
------
KeyError
    If no key was found. Will change in the future to raise if not all
    keys were found.
IndexingError
    If the boolean indexer is unalignable with the object being
    indexed.

Returns
-------
scalar, DataFrame, or Series: indexed value(s),