Pandas Series: xs() function
Cross-section from the Series/DataFrame in Pandas
The xs() function is used to get cross-section from the Series/DataFrame.
This method takes a key argument to select data at a particular level of a MultiIndex.
Syntax:
Series.xs(self, key, axis=0, level=None, drop_level=True)
Parameters:
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
key | Label contained in the index, or partially in a MultiIndex. |
label or tuple of label | Required |
axis | Axis to retrieve cross-section on. | {0 or ‘index’, 1 or ‘columns’} Default Value: 0 |
Required |
level | In case of a key partially contained in a MultiIndex, indicate which levels are used. Levels can be referred by label or position. | object Default Value: defaults to first n levels (n=1 or len(key)) |
Required |
drop_level | If False, returns object with same levels as self. | bool Default Value: True |
Required |
Returns: Series or DataFrame
Cross-section from the original Series or DataFrame corresponding to the selected index levels.
Notes:
xs can not be used to set values.
MultiIndex Slicers is a generic way to get/set values on any level or levels.
Example:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df
Output:
num_legs num_wings class animal locomotion mammal tiger walks 4 0 lion walks 4 0 fox walks 4 0 bird eagle flies 2 2 penguin walks 2 2
Example - Get values at specified index:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df.xs('mammal')
Output:
num_legs num_wings animal locomotion tiger walks 4 0 lion walks 4 0 fox walks 4 0
Example - Get values at several indexes:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df.xs(('mammal', 'fox'))
Output:
num_legs num_wings locomotion walks 4 0
Example - Get values at specified index and level:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df.xs('lion', level=1)
Output:
num_legs num_wings class locomotion mammal walks 4 0
Example - Get values at several indexes and levels:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df.xs(('bird', 'walks'),
level=[0, 'locomotion'])
Output:
num_legs num_wings animal penguin 2 2
Example - Get values at specified column and axis:
Python-Pandas Code:
import numpy as np
import pandas as pd
d = {'num_legs': [4, 4, 4, 2, 2],
'num_wings': [0, 0, 0, 2, 2],
'class': ['mammal', 'mammal', 'mammal', 'bird', 'bird'],
'animal': ['tiger', 'lion', 'fox', 'eagle', 'penguin'],
'locomotion': ['walks', 'walks', 'walks', 'flies', 'walks']}
df = pd.DataFrame(data=d)
df = df.set_index(['class', 'animal', 'locomotion'])
df.xs('num_wings', axis=1)
Output:
class animal locomotion mammal tiger walks 0 lion walks 0 fox walks 0 bird eagle flies 2 penguin walks 2 Name: num_wings, dtype: int64
Previous: Get item and drop from frame
Next: Addition of Pandas series and other
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics