def xs(self, key, axis=<NUM_LIT:0>, level=None, drop_level=True):
axis = self._get_axis_number(axis)<EOL>labels = self._get_axis(axis)<EOL>if level is not None:<EOL><INDENT>loc, new_ax = labels.get_loc_level(key, level=level,<EOL>drop_level=drop_level)<EOL>indexer = [slice(None)] * self.ndim<EOL>indexer[axis] = loc<EOL>indexer = tuple(indexer)<EOL>result = self.iloc[indexer]<EOL>setattr(result, result._get_axis_name(axis), new_ax)<EOL>return result<EOL><DEDENT>if axis == <NUM_LIT:1>:<EOL><INDENT>return self[key]<EOL><DEDENT>self._consolidate_inplace()<EOL>index = self.index<EOL>if isinstance(index, MultiIndex):<EOL><INDENT>loc, new_index = self.index.get_loc_level(key,<EOL>drop_level=drop_level)<EOL><DEDENT>else:<EOL><INDENT>loc = self.index.get_loc(key)<EOL>if isinstance(loc, np.ndarray):<EOL><INDENT>if loc.dtype == np.bool_:<EOL><INDENT>inds, = loc.nonzero()<EOL>return self._take(inds, axis=axis)<EOL><DEDENT>else:<EOL><INDENT>return self._take(loc, axis=axis)<EOL><DEDENT><DEDENT>if not is_scalar(loc):<EOL><INDENT>new_index = self.index[loc]<EOL><DEDENT><DEDENT>if is_scalar(loc):<EOL><INDENT>new_values = self._data.fast_xs(loc)<EOL>if not is_list_like(new_values) or self.ndim == <NUM_LIT:1>:<EOL><INDENT>return com.maybe_box_datetimelike(new_values)<EOL><DEDENT>result = self._constructor_sliced(<EOL>new_values, index=self.columns,<EOL>name=self.index[loc], dtype=new_values.dtype)<EOL><DEDENT>else:<EOL><INDENT>result = self.iloc[loc]<EOL>result.index = new_index<EOL><DEDENT>result._set_is_copy(self, copy=not result._is_view)<EOL>return result<EOL>
Return cross-section from the Series/DataFrame.

This method takes a `key` argument to select data at a particular
level of a MultiIndex.

Parameters
----------
key : label or tuple of label
    Label contained in the index, or partially in a MultiIndex.
axis : {0 or 'index', 1 or 'columns'}, default 0
    Axis to retrieve cross-section on.
level : object, defaults to first n levels (n=1 or len(key))
    In case of a key partially contained in a MultiIndex, indicate
    which levels are used. Levels can be referred by label or position.
drop_level : bool, default True
    If False, returns object with same levels as self.

Returns
-------
Series or DataFrame
    Cross-section from the original Series or DataFrame
    corresponding to the selected index levels.

See Also
--------
DataFrame.loc : Access a group of rows and columns
    by label(s) or a boolean array.
DataFrame.iloc : Purely integer-location based indexing
    for selection by position.

Notes
-----
`xs` can not be used to set values.

MultiIndex Slicers is a generic way to get/set values on
any level or levels.
It is a superset of `xs` functionality, see
:ref:`MultiIndex Slicers <advanced.mi_slicers>`.

Examples
--------
>>> d = {'num_legs': [4, 4, 2, 2],
...      'num_wings': [0, 0, 2, 2],
...      'class': ['mammal', 'mammal', 'mammal', 'bird'],
...      'animal': ['cat', 'dog', 'bat', 'penguin'],
...      'locomotion': ['walks', 'walks', 'flies', 'walks']}
>>> df = pd.DataFrame(data=d)
>>> df = df.set_index(['class', 'animal', 'locomotion'])
>>> df
                           num_legs  num_wings
class  animal  locomotion
mammal cat     walks              4          0
       dog     walks              4          0
       bat     flies              2          2
bird   penguin walks              2          2

Get values at specified index

>>> df.xs('mammal')
                   num_legs  num_wings
animal locomotion
cat    walks              4          0
dog    walks              4          0
bat    flies              2          2

Get values at several indexes

>>> df.xs(('mammal', 'dog'))
            num_legs  num_wings
locomotion
walks              4          0

Get values at specified index and level

>>> df.xs('cat', level=1)
                   num_legs  num_wings
class  locomotion
mammal walks              4          0

Get values at several indexes and levels

>>> df.xs(('bird', 'walks'),
...       level=[0, 'locomotion'])
         num_legs  num_wings
animal
penguin         2          2

Get values at specified column and axis

>>> df.xs('num_wings', axis=1)
class   animal   locomotion
mammal  cat      walks         0
        dog      walks         0
        bat      flies         2
bird    penguin  walks         2
Name: num_wings, dtype: int64