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.
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://w3resource.com/python-exercises/pandas/index/pandas-indexing-exercise-26.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics