@@ -3420,71 +3420,102 @@ class max_speed
3420
3420
3421
3421
def xs (self , key , axis = 0 , level = None , drop_level = True ):
3422
3422
"""
3423
- Returns a cross-section (row(s) or column(s)) from the
3424
- Series/DataFrame. Defaults to cross-section on the rows (axis=0).
3423
+ Return cross-section from the Series/DataFrame.
3424
+
3425
+ This method takes a `key` argument to select data at a particular
3426
+ level of a MultiIndex.
3425
3427
3426
3428
Parameters
3427
3429
----------
3428
- key : object
3429
- Some label contained in the index, or partially in a MultiIndex
3430
- axis : int , default 0
3431
- Axis to retrieve cross-section on
3430
+ key : label or tuple of label
3431
+ Label contained in the index, or partially in a MultiIndex.
3432
+ axis : {0 or 'index', 1 or 'columns'} , default 0
3433
+ Axis to retrieve cross-section on.
3432
3434
level : object, defaults to first n levels (n=1 or len(key))
3433
3435
In case of a key partially contained in a MultiIndex, indicate
3434
3436
which levels are used. Levels can be referred by label or position.
3435
- drop_level : boolean , default True
3437
+ drop_level : bool , default True
3436
3438
If False, returns object with same levels as self.
3437
3439
3440
+ Returns
3441
+ -------
3442
+ Series or DataFrame
3443
+ Cross-section from the original Series or DataFrame
3444
+ corresponding to the selected index levels.
3445
+
3446
+ See Also
3447
+ --------
3448
+ DataFrame.loc : Access a group of rows and columns
3449
+ by label(s) or a boolean array.
3450
+ DataFrame.iloc : Purely integer-location based indexing
3451
+ for selection by position.
3452
+
3453
+ Notes
3454
+ -----
3455
+ `xs` can not be used to set values.
3456
+
3457
+ MultiIndex Slicers is a generic way to get/set values on
3458
+ any level or levels.
3459
+ It is a superset of `xs` functionality, see
3460
+ :ref:`MultiIndex Slicers <advanced.mi_slicers>`.
3461
+
3438
3462
Examples
3439
3463
--------
3464
+ >>> d = {'num_legs': [4, 4, 2, 2],
3465
+ ... 'num_wings': [0, 0, 2, 2],
3466
+ ... 'class': ['mammal', 'mammal', 'mammal', 'bird'],
3467
+ ... 'animal': ['cat', 'dog', 'bat', 'penguin'],
3468
+ ... 'locomotion': ['walks', 'walks', 'flies', 'walks']}
3469
+ >>> df = pd.DataFrame(data=d)
3470
+ >>> df = df.set_index(['class', 'animal', 'locomotion'])
3440
3471
>>> df
3441
- A B C
3442
- a 4 5 2
3443
- b 4 0 9
3444
- c 9 7 3
3445
- >>> df.xs('a')
3446
- A 4
3447
- B 5
3448
- C 2
3449
- Name: a
3450
- >>> df.xs('C', axis=1)
3451
- a 2
3452
- b 9
3453
- c 3
3454
- Name: C
3472
+ num_legs num_wings
3473
+ class animal locomotion
3474
+ mammal cat walks 4 0
3475
+ dog walks 4 0
3476
+ bat flies 2 2
3477
+ bird penguin walks 2 2
3455
3478
3456
- >>> df
3457
- A B C D
3458
- first second third
3459
- bar one 1 4 1 8 9
3460
- two 1 7 5 5 0
3461
- baz one 1 6 6 8 0
3462
- three 2 5 3 5 3
3463
- >>> df.xs(('baz', 'three'))
3464
- A B C D
3465
- third
3466
- 2 5 3 5 3
3467
- >>> df.xs('one', level=1)
3468
- A B C D
3469
- first third
3470
- bar 1 4 1 8 9
3471
- baz 1 6 6 8 0
3472
- >>> df.xs(('baz', 2), level=[0, 'third'])
3473
- A B C D
3474
- second
3475
- three 5 3 5 3
3479
+ Get values at specified index
3476
3480
3477
- Returns
3478
- -------
3479
- xs : Series or DataFrame
3481
+ >>> df.xs('mammal')
3482
+ num_legs num_wings
3483
+ animal locomotion
3484
+ cat walks 4 0
3485
+ dog walks 4 0
3486
+ bat flies 2 2
3480
3487
3481
- Notes
3482
- -----
3483
- xs is only for getting, not setting values.
3488
+ Get values at several indexes
3489
+
3490
+ >>> df.xs(('mammal', 'dog'))
3491
+ num_legs num_wings
3492
+ locomotion
3493
+ walks 4 0
3494
+
3495
+ Get values at specified index and level
3496
+
3497
+ >>> df.xs('cat', level=1)
3498
+ num_legs num_wings
3499
+ class locomotion
3500
+ mammal walks 4 0
3501
+
3502
+ Get values at several indexes and levels
3503
+
3504
+ >>> df.xs(('bird', 'walks'),
3505
+ ... level=[0, 'locomotion'])
3506
+ num_legs num_wings
3507
+ animal
3508
+ penguin 2 2
3509
+
3510
+ Get values at specified column and axis
3484
3511
3485
- MultiIndex Slicers is a generic way to get/set values on any level or
3486
- levels. It is a superset of xs functionality, see
3487
- :ref:`MultiIndex Slicers <advanced.mi_slicers>`
3512
+ >>> df.xs('num_wings', axis=1)
3513
+ class animal locomotion
3514
+ mammal cat walks 0
3515
+ dog walks 0
3516
+ bat flies 2
3517
+ bird penguin walks 2
3518
+ Name: num_wings, dtype: int64
3488
3519
"""
3489
3520
axis = self ._get_axis_number (axis )
3490
3521
labels = self ._get_axis (axis )
0 commit comments