pandas.DataFrame.xs#

DataFrame.xs(key, axis=0, level=None, drop_level=True)[source]#

从 Series/DataFrame 返回横截面。

此方法接受一个 key 参数,用于在 MultiIndex 的特定级别上选择数据。

参数:
key标签或标签元组

包含在索引中的标签,或部分包含在 MultiIndex 中的标签。

axis{0 或 ‘index’, 1 或 ‘columns’}, 默认为 0

用于检索横截面的轴。

level对象,默认为前 n 个级别(n=1 或 len(key))

如果 key 部分包含在 MultiIndex 中,则指示使用的级别。级别可以通过标签或位置引用。

drop_level布尔值,默认为 True

如果为 False,则返回与 self 具有相同级别的对象。

返回:
Series 或 DataFrame

与所选索引级别对应的原始 Series 或 DataFrame 的横截面。

另请参阅

DataFrame.loc

通过标签或布尔数组访问一组行和列。

DataFrame.iloc

纯粹基于整数位置的索引,用于按位置选择。

注意

xs 不能用于设置值。

MultiIndex Slicers 是一种在任何级别或多个级别上获取/设置值的通用方法。它是 xs 功能的超集,请参阅 MultiIndex Slicers

示例

>>> 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

在指定索引处获取值

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

获取多个索引处的值

>>> df.xs(("mammal", "dog", "walks"))
num_legs     4
num_wings    0
Name: (mammal, dog, walks), dtype: int64

在指定的索引和级别处获取值

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

在指定的多个索引和级别处获取值

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

在指定的列和轴处获取值

>>> 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