pandas.DataFrame.xs #

数据框。xs ( key , axis = 0 , level = None , drop_level = True ) [来源] #

从系列/数据帧返回横截面。

此方法采用关键参数来选择 MultiIndex 特定级别的数据。

参数
标签或标签元组

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

{0 或 'index', 1 或 'columns'}, 默认 0

要检索横截面的轴。

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

如果某个键部分包含在 MultiIndex 中,请指示使用哪些级别。级别可以通过标签或位置来引用。

drop_level bool, 默认 True

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

返回
系列或数据框

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

也可以看看

DataFrame.loc

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

DataFrame.iloc

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

笔记

xs不能用于设置值。

多索引切片器是一种在任何级别上获取/设置值的通用方法。它是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