﻿ Pandas: Drop a level from a multi-level column index - w3resource # Pandas: Drop a level from a multi-level column index

## Pandas Indexing: Exercise-21 with Solution

Write a Pandas program to drop a index level from a multi-level column index of a dataframe.

Note: Levels are 0-indexed beginning from the top.

Sample Solution:

Python Code :

``````import pandas as pd
cols = pd.MultiIndex.from_tuples([("a", "x"), ("a", "y"), ("a", "z")])
print("\nConstruct a Dataframe using the said MultiIndex levels: ")
df = pd.DataFrame([[1,2,3], [3,4,5], [5,6,7]], columns=cols)
print(df)
#Levels are 0-indexed beginning from the top.
print("\nRemove the top level index:")
df.columns = df.columns.droplevel(0)
print(df)
df = pd.DataFrame([[1,2,3], [3,4,5], [5,6,7]], columns=cols)
print("\nOriginal dataframe:")
print(df)
print("\nRemove the index next to top level:")
df.columns = df.columns.droplevel(1)
print(df)
``````

Sample Output:

```Construct a Dataframe using the said MultiIndex levels:
a
x  y  z
0  1  2  3
1  3  4  5
2  5  6  7

Remove the top level index:
x  y  z
0  1  2  3
1  3  4  5
2  5  6  7

Original dataframe:
a
x  y  z
0  1  2  3
1  3  4  5
2  5  6  7

Remove the index next to top level:
a  a  a
0  1  2  3
1  3  4  5
2  5  6  7
```

Python Code Editor:

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

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz

﻿

## Python: Tips of the Day

For-else construct useful when searched for something and find it:

```# For example assume that I need to search through a list and process each item until a flag item is found and
# then stop processing. If the flag item is missing then an exception needs to be raised.

for i in mylist:
if i == theflag:
break
process(i)
else:
raise ValueError("List argument missing terminal flag.")
```