I have a recurring dream where my instructor from a coding boot camp would constantly beat my head with a ruler telling me to read a package or library’s documentation. Hence, as a past time, I would find myself digging into Python or Panda’s documentation.
Today, I found myself wandering into pandas’ .drop() function. So, in this post, I shall attempt to make sense of panda’s documentation for the ever famous .drop()
.
Housekeeping
Let’s import pandas and create a sample dataframe.
import pandas as pd data = {'fname': ['Priyanka', 'Jane', 'Sarah', 'Jake', 'Tatum', 'Shubham', 'Antonio'], 'color': ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'], 'value': [0, 1, 2, 3, 5, 8, 13], 'score': [345, 778, 124, 554, 864, 908, 456] } df = pd.DataFrame(data)
If we type df
into a cell in Jupyter notebook, this will give us the whole dataframe:

One-level DataFrame Operations
Now let’s get rid of some columns.
df.drop(['color', 'score'], axis=1)
The code above simply tells Python to get rid of the 'color'
and 'score'
in axis=1
which means look in the columns. Alternatively, we could’ve just as easily not used the named parameter axis because it’s confusing. So, let’s try that now:
df.drop(columns=['color', 'score'])
Both of the methods above will result in the following:

Next, we’ll get rid of some rows (or records).
df.drop([1, 2, 4, 6])
Above, we’re simply telling Python to get rid of the rows with the index of 1, 2, 4, and 6. Note that the indices are passed as a list [1, 2, 4, 6]
. This will result in the following:

MultiIndex DataFrame Operations
In this next round, we’re going to work with a multi-index dataframe. Let’s set it up:
data = pd.MultiIndex(levels=[['slim jim', 'avocado', 'banana', 'pork rinds'], ['carbs', 'fat', 'protein']], codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]]) df = pd.DataFrame(index=data, columns=['thinghy', 'majig'], data=[[45, 30], [200, 100], [1.5, 1], [30, 20], [250, 150], [1.5, 0.8], [320, 250], [1, 0.8], [0.3, 0.2], [34.2, 56], [33, 45.1], [67.3, 98]])
This is how the multi-index dataframe looks like:

Now, let’s get rid of the 'thinghy'
column with:
df.drop(columns='thinghy')
And this is what we get:

Next, let’s get rid of 'pork rinds'
because I don’t like them:
df.drop(index='pork rinds', level=0)
And this is what we get:

And finally, let’s cut the fat:
df.drop(index='fat', level=1)
Above, level=1
simply means the second level (since the first level starts with 0). In this case, it’s the carbs, fat, and protein levels. By specifying index='fat'
, we’re telling Python to get rid of the fat in level=1
.
Here’s what we get:

Staying Put
So far, with all the playing that we did, somehow, if we type df
into a cell, the output that we’re going to get is the original dataframe without modifications. this is because all the changes that we’ve been making take effect only on the display.
But what if we want to make the changes permanent? Enter: inplace.
df.drop(index='fat', level=1, inplace=True)
Above, we added inplace=True
in the parameter. This signals Python that we want the changes to be taken in place so that when we output df
, this is what we’ll get:

We had permanently cut the fat off. LOL!
Thank you for reading! That’s it for today.
Stay tuned!