Dropping columns and rows in Pandas - Time & Space Complexity
When we drop columns or rows in pandas, we want to know how the time it takes changes as the data grows.
We ask: How does the work increase when the table gets bigger?
Analyze the time complexity of the following code snippet.
import pandas as pd
data = pd.DataFrame({
'A': range(1000),
'B': range(1000, 2000),
'C': range(2000, 3000)
})
# Drop one column and one row
result = data.drop(columns=['B']).drop(index=[0])
This code creates a table with 3 columns and 1000 rows, then removes one column and one row.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Copying data except the dropped parts.
- How many times: Once for each drop operation, touching all remaining rows or columns.
When the table grows, dropping a column or row means copying almost all data except the dropped parts.
| Input Size (n rows) | Approx. Operations |
|---|---|
| 10 | About 20 (copying 2 columns x 10 rows) |
| 100 | About 200 (copying 2 columns x 100 rows) |
| 1000 | About 2000 (copying 2 columns x 1000 rows) |
Pattern observation: The work grows roughly in direct proportion to the number of rows times columns kept.
Time Complexity: O(n x m)
This means the time to drop columns or rows grows roughly with the size of the data kept, where n is rows and m is columns.
[X] Wrong: "Dropping a single column or row is always very fast and constant time."
[OK] Correct: Even dropping one column or row requires copying the rest of the data, so time grows with the size of what remains.
Understanding how data operations scale helps you explain your choices clearly and shows you know what happens behind the scenes.
What if we dropped multiple columns at once? How would the time complexity change?
Practice
drop() function do in pandas?Solution
Step 1: Understand the purpose of
Thedrop()drop()function is used to remove data, either rows or columns, from a DataFrame.Step 2: Identify what
It specifically removes rows or columns based on labels, not adding or sorting data.drop()removesFinal Answer:
Removes specified rows or columns from a DataFrame -> Option AQuick Check:
drop()removes rows/columns [OK]
- Thinking drop adds data instead of removing
- Confusing drop with sort or describe functions
- Assuming drop changes data without specifying inplace
'Age' from a DataFrame df?Solution
Step 1: Identify axis for columns
In pandas,axis=1means columns, so to drop a column, useaxis=1.Step 2: Check syntax correctness
The syntaxdf.drop('Age', axis=1)correctly drops the column named 'Age'. df.drop(column='Age') is close but incorrect syntax; it should bedf.drop(columns=['Age'])with a list.Final Answer:
df.drop('Age', axis=1) -> Option BQuick Check:
Drop column uses axis=1 [OK]
- Using axis=0 to drop columns
- Forgetting to specify axis parameter
- Using drop with wrong parameter names
df below:Name Age City 0 John 25 NY 1 Anna 30 LA 2 Mike 22 SF
What is the output of
df.drop(1, axis=0)?Solution
Step 1: Understand dropping rows by index
Usingdrop(1, axis=0)removes the row with index 1, which is the row for Anna.Step 2: Identify remaining rows
Rows with index 0 (John) and 2 (Mike) remain, so the output excludes Anna's row.Final Answer:
Name Age City 0 John 25 NY 2 Mike 22 SF -> Option CQuick Check:
Drop row index 1 removes Anna [OK]
- Confusing axis=0 and axis=1
- Expecting row to be removed by label instead of index
- Not realizing drop returns a new DataFrame by default
df?
df.drop('Salary')Solution
Step 1: Check default axis in drop()
By default,drop()assumesaxis=0, which means it tries to drop a row, not a column.Step 2: Specify axis=1 to drop a column
To drop a column, you must specifyaxis=1. Without it, pandas looks for a row named 'Salary' and fails if none exists.Final Answer:
Missing axis=1 to specify dropping a column -> Option DQuick Check:
Drop columns requires axis=1 [OK]
- Forgetting axis=1 when dropping columns
- Assuming drop changes DataFrame without inplace=True
- Using drop with a single string but wrong axis
df with columns ['Name', 'Age', 'City', 'Salary']. You want to remove the rows with index 0 and 2, and also drop the column 'Salary' in one line without changing the original DataFrame. Which code does this correctly?Solution
Step 1: Drop rows with index 0 and 2
Usedf.drop([0, 2], axis=0)to remove rows 0 and 2 without changing original DataFrame.Step 2: Drop column 'Salary' from the result
Chain.drop('Salary', axis=1)to remove the column from the intermediate DataFrame.Step 3: Verify no inplace=True used
Since we want to keep original DataFrame unchanged, do not useinplace=True. The chained drops return a new DataFrame.Final Answer:
df.drop([0, 2], axis=0).drop('Salary', axis=1) -> Option AQuick Check:
Chain drops with correct axis, no inplace [OK]
- Mixing axis values for rows and columns
- Using inplace=True which changes original DataFrame
- Trying to drop rows and columns in one drop call incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
