w3resource

Pandas: Select rows from multi-index dataframe

Pandas Indexing: Exercise-26 with Solution

Write a Pandas program to select rows by filtering on one or more column(s) in a multi-index dataframe.

Sample Solution:

Python Code :

import pandas as pd
df = pd.DataFrame({
    'school_code': ['s001','s002','s003','s001','s002','s004'],
    'class': ['V', 'V', 'VI', 'VI', 'V', 'VI'],
    'name': ['Alberto Franco','Gino Mcneill','Ryan Parkes', 'Eesha Hinton', 'Gino Mcneill', 'David Parkes'],
    'date_of_birth': ['15/05/2002','17/05/2002','16/02/1999','25/09/1998','11/05/2002','15/09/1997'],
    'weight': [35, 37, 33, 30, 31, 32],
    'tcode': ['t1', 't2', 't3', 't4', 't5', 't6']})    
print("Original DataFrame:")
print(df)
print("\nCreate MultiIndex on 'tcode' and 'school_code':")
df = df.set_index(['tcode', 'school_code'])
print(df)
print("\nSelect rows(s) from 'tcode' column:")
print(df.query("tcode == 't2'"))
print("\nSelect rows(s) from 'school_code' column:")
print(df.query("school_code == 's001'"))
print("\nSelect rows(s) from 'tcode' and 'scode' columns:")
print(df.query(("tcode == 't1'") and ("school_code == 's001'")))

Sample Output:

Original DataFrame:
  school_code class            name date_of_birth  weight tcode
0        s001     V  Alberto Franco    15/05/2002      35    t1
1        s002     V    Gino Mcneill    17/05/2002      37    t2
2        s003    VI     Ryan Parkes    16/02/1999      33    t3
3        s001    VI    Eesha Hinton    25/09/1998      30    t4
4        s002     V    Gino Mcneill    11/05/2002      31    t5
5        s004    VI    David Parkes    15/09/1997      32    t6

Create MultiIndex on 'tcode' and 'school_code':
                  class            name date_of_birth  weight
tcode school_code                                            
t1    s001            V  Alberto Franco    15/05/2002      35
t2    s002            V    Gino Mcneill    17/05/2002      37
t3    s003           VI     Ryan Parkes    16/02/1999      33
t4    s001           VI    Eesha Hinton    25/09/1998      30
t5    s002            V    Gino Mcneill    11/05/2002      31
t6    s004           VI    David Parkes    15/09/1997      32

Select rows(s) from 'tcode' column:
                  class          name date_of_birth  weight
tcode school_code                                          
t2    s002            V  Gino Mcneill    17/05/2002      37

Select rows(s) from 'school_code' column:
                  class            name date_of_birth  weight
tcode school_code                                            
t1    s001            V  Alberto Franco    15/05/2002      35
t4    s001           VI    Eesha Hinton    25/09/1998      30

Select rows(s) from 'tcode' and 'scode' columns:
                  class            name date_of_birth  weight
tcode school_code                                            
t1    s001            V  Alberto Franco    15/05/2002      35
t4    s001           VI    Eesha Hinton    25/09/1998      30

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Pandas program to start index with different value rather than 0 in a given DataFrame.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/python-exercises/pandas/index/pandas-indexing-exercise-26.php