Bird
Raised Fist0
Pandasdata~5 mins

Selecting multiple columns in Pandas - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Selecting multiple columns
O(n)
Understanding Time Complexity

We want to understand how the time it takes to select multiple columns from a table grows as the table gets bigger.

Specifically, how does the work change when the number of rows or columns changes?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


import pandas as pd

n = 10  # Example value for n

data = pd.DataFrame({
    'A': range(n),
    'B': range(n),
    'C': range(n),
    'D': range(n)
})

selected = data[['A', 'C']]
    

This code creates a table with n rows and 4 columns, then selects two columns from it.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Copying data from the selected columns for all rows.
  • How many times: Once for each row in the table (n times).
How Execution Grows With Input

As the number of rows grows, the work to select columns grows proportionally.

Input Size (n)Approx. Operations
10About 10 operations (copying 2 columns for 10 rows)
100About 100 operations
1000About 1000 operations

Pattern observation: The work grows directly with the number of rows.

Final Time Complexity

Time Complexity: O(n)

This means the time to select columns grows in a straight line as the number of rows increases.

Common Mistake

[X] Wrong: "Selecting columns is instant and does not depend on the number of rows."

[OK] Correct: Even though we only pick columns, pandas must copy data for every row, so more rows mean more work.

Interview Connect

Understanding how data selection scales helps you write efficient code and explain your choices clearly in real projects.

Self-Check

"What if we selected all columns instead of just two? How would the time complexity change?"

Practice

(1/5)
1. What is the correct way to select multiple columns 'A' and 'B' from a pandas DataFrame df?
easy
A. df.loc['A', 'B']
B. df['A', 'B']
C. df[['A', 'B']]
D. df['A' & 'B']

Solution

  1. Step 1: Understand pandas column selection syntax

    To select multiple columns, pandas requires a list of column names inside double brackets.
  2. Step 2: Apply correct syntax for multiple columns

    Using df[['A', 'B']] correctly selects columns 'A' and 'B'. Other options are invalid syntax or select rows instead.
  3. Final Answer:

    df[['A', 'B']] -> Option C
  4. Quick Check:

    Multiple columns = list inside double brackets [OK]
Hint: Use double brackets with a list for multiple columns [OK]
Common Mistakes:
  • Using single brackets with comma-separated names
  • Using bitwise operators like & between column names
  • Using .loc incorrectly for column selection
2. Which of the following is the correct syntax to select columns 'X' and 'Y' from DataFrame df?
easy
A. df.loc[:, 'X', 'Y']
B. df.loc['X', 'Y']
C. df['X', 'Y']
D. df[['X', 'Y']]

Solution

  1. Step 1: Recall syntax for selecting multiple columns

    Using double brackets with a list of column names is the standard way: df[['X', 'Y']].
  2. Step 2: Check other options for correctness

    df.loc[:, 'X', 'Y'] causes TypeError (invalid arguments to loc); df['X', 'Y'] raises KeyError (tuple not a column); df.loc['X', 'Y'] is incorrect syntax.
  3. Final Answer:

    df[['X', 'Y']] -> Option D
  4. Quick Check:

    Double brackets with list = correct syntax [OK]
Hint: Remember: double brackets with list select multiple columns [OK]
Common Mistakes:
  • Using single brackets with multiple column names
  • Confusing .loc row and column selection syntax
  • Using tuple instead of list inside brackets
3. Given the DataFrame df below:
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

What is the output of df[['B', 'C']]?
medium
A.
   B  C
0  4  7
1  5  8
2  6  9
B.
   A  B
0  1  4
1  2  5
2  3  6
C.
   A  C
0  1  7
1  2  8
2  3  9
D. KeyError

Solution

  1. Step 1: Identify columns requested

    The code selects columns 'B' and 'C' from the DataFrame.
  2. Step 2: Extract columns 'B' and 'C' values

    Columns 'B' and 'C' have values [[4,7],[5,8],[6,9]] for rows 0,1,2 respectively.
  3. Final Answer:

    B C 0 4 7 1 5 8 2 6 9 -> Option A
  4. Quick Check:

    Selected columns 'B' and 'C' output matches
       B  C
    0  4  7
    1  5  8
    2  6  9
    [OK]
Hint: Selected columns show only those columns with all rows [OK]
Common Mistakes:
  • Confusing columns selected and expecting all columns
  • Getting KeyError by misspelling column names
  • Selecting rows instead of columns
4. What error will occur with this code?
df = pd.DataFrame({'X':[1,2], 'Y':[3,4]})
selected = df['X', 'Y']
medium
A. TypeError
B. KeyError
C. SyntaxError
D. No error, returns both columns

Solution

  1. Step 1: Analyze the indexing syntax

    The code uses single brackets with a comma, creating a tuple key ('X', 'Y').
  2. Step 2: Understand pandas error type

    This raises KeyError because pandas looks for a column named ('X', 'Y'), which doesn't exist.
  3. Final Answer:

    KeyError -> Option B
  4. Quick Check:

    Tuple key in single brackets causes KeyError [OK]
Hint: Use list inside double brackets, not comma in single brackets [OK]
Common Mistakes:
  • Using comma inside single brackets for multiple columns
  • Expecting no error with wrong syntax
  • Confusing TypeError with KeyError
5. You have a DataFrame df with columns ['Name', 'Age', 'City', 'Salary']. You want to create a new DataFrame df_selected with only 'Name' and 'Salary'. Which code correctly does this and also resets the index?
hard
A. df_selected = df[['Name', 'Salary']].reset_index(drop=True)
B. df_selected = df.loc[:, ['Name', 'Salary']].reset_index()
C. df_selected = df[['Name', 'Salary']].reset_index()
D. df_selected = df[['Name', 'Salary']].reset_index(drop=False)

Solution

  1. Step 1: Select columns 'Name' and 'Salary'

    Use double brackets with list: df[['Name', 'Salary']] to select these columns.
  2. Step 2: Reset index without adding old index as column

    Use reset_index(drop=True) to reset index and drop old index column.
  3. Step 3: Check other options

    df.loc[:, ['Name', 'Salary']].reset_index() resets index but keeps old index as column. Using reset_index() without drop=True (default behavior) keeps the old index as a new column.
  4. Final Answer:

    df_selected = df[['Name', 'Salary']].reset_index(drop=True) -> Option A
  5. Quick Check:

    Select columns + reset index drop old index = df_selected = df[['Name', 'Salary']].reset_index(drop=True) [OK]
Hint: Select columns with double brackets, reset index with drop=True [OK]
Common Mistakes:
  • Forgetting to use double brackets for multiple columns
  • Not using drop=True in reset_index to avoid old index column
  • Using .loc without understanding index reset effect
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard