Bird
Raised Fist0
Pandasdata~20 mins

When to use apply vs vectorized operations in Pandas - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Apply vs Vectorized Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of vectorized operation vs apply
Given the DataFrame below, what is the output of the code snippet?
Pandas
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

result = df['A'] + df['B']
print(result.tolist())
A[5, 7, 9]
B[4, 5, 6]
C[1, 2, 3]
D[1, 6, 9]
Attempts:
2 left
💡 Hint
Adding two columns in pandas adds their values element-wise.
❓ Predict Output
intermediate
2:00remaining
Output of apply with a custom function
What is the output of this code using apply with a custom function on a DataFrame column?
Pandas
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3]})

result = df['A'].apply(lambda x: x * 2)
print(result.tolist())
A[2, 4, 6]
B[1, 2, 3]
C[3, 6, 9]
D[0, 2, 4]
Attempts:
2 left
💡 Hint
The lambda function doubles each element.
❓ data_output
advanced
2:00remaining
Performance difference between apply and vectorized operation
Which option correctly describes the performance difference when using apply vs vectorized operations on large DataFrames?
AApply is faster because it processes rows one by one in Python.
BVectorized operations are faster because they use optimized C code under the hood.
CBoth have the same speed for large DataFrames.
DApply is faster because it uses parallel processing automatically.
Attempts:
2 left
💡 Hint
Think about how pandas is built to handle operations.
🚀 Application
advanced
2:00remaining
Choosing apply vs vectorized operation for complex logic
You want to create a new column in a DataFrame based on complex logic that depends on multiple columns and conditions. Which approach is best?
AUse vectorized operations only, even if logic is complex.
BUse a for loop over DataFrame rows instead of apply or vectorized operations.
CUse apply with a custom function to handle the complex logic row-wise.
DUse apply but only on a single column ignoring other columns.
Attempts:
2 left
💡 Hint
Complex logic often needs row-wise processing.
🧠 Conceptual
expert
2:00remaining
When to prefer vectorized operations over apply
Which scenario best explains when you should prefer vectorized operations instead of apply in pandas?
AWhen you want to process data row by row with different logic for each row.
BWhen the operation requires checking multiple columns with complex conditions per row.
CWhen you want to apply a Python function that is not supported by pandas natively.
DWhen the operation can be expressed as simple arithmetic or built-in pandas functions applied to entire columns.
Attempts:
2 left
💡 Hint
Vectorized operations are best for simple, column-wise calculations.

Practice

(1/5)
1. Which of the following best describes when to use apply in pandas?
easy
A. When you want to merge two DataFrames.
B. When you want to perform simple arithmetic on entire columns quickly.
C. When you want to sort a DataFrame by a column.
D. When you need to run a custom function on each row or column.

Solution

  1. Step 1: Understand the purpose of apply

    apply is used to apply custom or complex functions to rows or columns in a DataFrame.
  2. Step 2: Compare with vectorized operations

    Vectorized operations are for simple, fast math on entire columns, not custom row-wise functions.
  3. Final Answer:

    When you need to run a custom function on each row or column. -> Option D
  4. Quick Check:

    Custom function use = apply = A [OK]
Hint: Use apply for custom row/column functions, vectorized for simple math [OK]
Common Mistakes:
  • Confusing apply with vectorized operations for simple math
  • Using apply for sorting or merging
  • Thinking apply is always faster
2. Which of these is the correct syntax to use apply on a DataFrame column df['col'] with a function func?
easy
A. apply(df['col'], func)
B. df['col'].apply(func)
C. df.apply['col'](func)
D. df['col'].apply = func

Solution

  1. Step 1: Recall the method call syntax

    In pandas, apply is a method called on a Series or DataFrame with the function as argument.
  2. Step 2: Check each option

    df['col'].apply(func) uses correct syntax: df['col'].apply(func). Others have syntax errors or wrong usage.
  3. Final Answer:

    df['col'].apply(func) -> Option B
  4. Quick Check:

    Method call with function argument = C [OK]
Hint: Use dot apply with parentheses and function inside [OK]
Common Mistakes:
  • Using square brackets instead of parentheses for apply
  • Trying to assign function to apply attribute
  • Calling apply as a standalone function
3. Given the DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
What is the output of:
df['C'] = df['A'] + df['B']
df['D'] = df['A'].apply(lambda x: x * 2)
df[['C', 'D']]
medium
A. C D 0 5 2 1 7 4 2 9 6
B. C D 0 5 1 1 7 2 2 9 3
C. C D 0 4 2 1 5 4 2 6 6
D. C D 0 5 4 1 7 6 2 9 8

Solution

  1. Step 1: Calculate column C using vectorized addition

    Column C = A + B = [1+4, 2+5, 3+6] = [5, 7, 9]
  2. Step 2: Calculate column D using apply with lambda

    Column D = A * 2 = [1*2, 2*2, 3*2] = [2, 4, 6]
  3. Final Answer:

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

    Vectorized + apply results = B [OK]
Hint: Add columns directly, use apply for custom row-wise ops [OK]
Common Mistakes:
  • Mixing up which columns are added
  • Forgetting to multiply by 2 in apply
  • Confusing apply output with original values
4. You want to double the values in column 'A' of DataFrame df. Which code has an error?
medium
A. df['A'] = df['A'] * 2
B. df['A'] = df['A'].apply(lambda x: x * 2)
C. df['A'] = df.apply(lambda x: x['A'] * 2)
D. df['A'] = df['A'].map(lambda x: x * 2)

Solution

  1. Step 1: Analyze df['A'] = df.apply(lambda x: x['A'] * 2)'s use of apply

    Using df.apply without specifying axis defaults to axis=0 (columns), so x['A'] fails because x is a column name string, not a row.
  2. Step 2: Compare with other options

    Options B, C, and D correctly double values using apply on Series, vectorized, or map on Series.
  3. Final Answer:

    df['A'] = df.apply(lambda x: x['A'] * 2) -> Option C
  4. Quick Check:

    apply on DataFrame needs axis=1 for row-wise, else error = A [OK]
Hint: Use axis=1 with apply on DataFrame rows to avoid errors [OK]
Common Mistakes:
  • Forgetting axis=1 in DataFrame apply
  • Confusing apply on DataFrame vs Series
  • Using map on DataFrame instead of Series
5. You have a DataFrame df with columns 'X' and 'Y'. You want to create a new column 'Z' that is 'X' squared if 'Y' is even, else 'X' cubed. Which is the best approach?
hard
A. Use vectorized operations with np.where and powers.
B. Use apply with a custom function checking Y and computing Z.
C. Use a for loop to iterate rows and assign Z values.
D. Use map on column 'X' only.

Solution

  1. Step 1: Understand the condition and operations

    We want Z = X^2 if Y is even, else Z = X^3.
  2. Step 2: Choose efficient method

    Using np.where with vectorized power operations is fast and clear. apply works but is slower. For loops are slow and verbose. map on X alone can't check Y.
  3. Final Answer:

    Use vectorized operations with np.where and powers. -> Option A
  4. Quick Check:

    Conditional vectorized ops > apply or loops = D [OK]
Hint: Use np.where for conditional vectorized operations [OK]
Common Mistakes:
  • Using apply when vectorized is faster
  • Using loops instead of vectorized code
  • Trying to map without condition on another column
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