Bird
Raised Fist0
Pandasdata~20 mins

apply() on columns in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Apply Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of apply() with a lambda on DataFrame columns
What is the output of this code when applying a lambda function to each column of the DataFrame?
Pandas
import pandas as pd

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

result = df.apply(lambda x: x.max() - x.min())
print(result)
A
A    2
B    2
dtype: int64
B
A    3
B    6
dtype: int64
C
A    1
B    4
dtype: int64
D
A    6
B    9
dtype: int64
Attempts:
2 left
💡 Hint
Think about what max() and min() do for each column.
❓ data_output
intermediate
2:00remaining
Result of apply() with a custom function on columns
Given this DataFrame, what is the result of applying the custom function to each column?
Pandas
import pandas as pd

def custom_func(col):
    return col.sum() / len(col)

df = pd.DataFrame({
    'X': [10, 20, 30],
    'Y': [5, 15, 25]
})

result = df.apply(custom_func)
print(result)
A
X    30
Y    25
dtype: int64
B
X    60
Y    45
dtype: int64
C
X    10
Y    5
dtype: int64
D
X    20.0
Y    15.0
dtype: float64
Attempts:
2 left
💡 Hint
The function calculates the average of each column.
🔧 Debug
advanced
2:00remaining
Identify the error in apply() usage on columns
What error does this code raise when applying the function to each column?
Pandas
import pandas as pd

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

result = df.apply(lambda x: x["nonexistent"])
print(result)
AKeyError: 'nonexistent'
BAttributeError: 'Series' object has no attribute 'nonexistent'
CTypeError: 'int' object is not subscriptable
DValueError: cannot index with vector
Attempts:
2 left
💡 Hint
Check if the column has the key you are trying to access.
❓ visualization
advanced
2:00remaining
Visualize the effect of apply() on columns with a plotting function
Which option correctly applies a function to plot the sum of each column as a bar chart?
Pandas
import pandas as pd
import matplotlib.pyplot as plt

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

# Which code snippet below correctly plots the sum of each column as a bar chart?
A
df.sum().apply(lambda x: x).plot(kind='bar')
plt.show()
B
df.plot(kind='bar').apply(sum)
plt.show()
C
df.apply(sum).plot(kind='bar')
plt.show()
D
df.apply(lambda x: x.plot(kind='bar'))
plt.show()
Attempts:
2 left
💡 Hint
Sum the columns first, then plot the result.
🚀 Application
expert
3:00remaining
Use apply() on columns to normalize data
You want to normalize each column in a DataFrame by subtracting the mean and dividing by the standard deviation. Which code snippet correctly does this using apply() on columns?
Pandas
import pandas as pd

df = pd.DataFrame({
    'X': [10, 20, 30],
    'Y': [5, 15, 25]
})

# Choose the correct code to normalize columns
Adf.apply(lambda x: (x - df.mean()) / df.std())
Bdf.apply(lambda x: (x - x.mean()) / x.std())
Cdf.apply(lambda x: (x - x.median()) / x.std())
Ddf.apply(lambda x: (x - x.min()) / (x.max() - x.min()))
Attempts:
2 left
💡 Hint
Normalization uses mean and standard deviation of each column separately.

Practice

(1/5)
1. What does the apply() function do when used on a pandas DataFrame column?
easy
A. It applies a function to each value in the column.
B. It deletes the column from the DataFrame.
C. It sorts the column values in ascending order.
D. It merges the column with another DataFrame.

Solution

  1. Step 1: Understand the purpose of apply() on columns

    The apply() method runs a function on each element of the column, transforming or analyzing the data.
  2. Step 2: Compare with other options

    Deleting, sorting, or merging are not actions performed by apply() on a column.
  3. Final Answer:

    It applies a function to each value in the column. -> Option A
  4. Quick Check:

    apply() runs function on each column value [OK]
Hint: Remember: apply() runs a function on each column value [OK]
Common Mistakes:
  • Thinking apply() deletes or sorts data
  • Confusing apply() with merge or drop functions
  • Assuming apply() works on entire DataFrame without axis
2. Which of the following is the correct syntax to apply a lambda function that doubles each value in the 'age' column of a DataFrame df?
easy
A. df['age'].apply = lambda x: x * 2
B. df.apply['age'](lambda x: x * 2)
C. df['age'].apply(lambda x: x * 2)
D. apply(df['age'], lambda x: x * 2)

Solution

  1. Step 1: Identify correct method call syntax

    The correct way to use apply on a column is df['column'].apply(function). df['age'].apply(lambda x: x * 2) matches this.
  2. Step 2: Check lambda function usage

    df['age'].apply(lambda x: x * 2) correctly passes a lambda function that doubles the value. Other options misuse syntax or assignment.
  3. Final Answer:

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

    Use df['col'].apply(lambda x: ...) [OK]
Hint: Use df['col'].apply(lambda x: ...) for column functions [OK]
Common Mistakes:
  • Using square brackets with apply like a list
  • Assigning apply instead of calling it
  • Calling apply as a standalone function
3. Given the DataFrame df below:
   score
0     10
1     20
2     30
3     40

What is the output of df['score'].apply(lambda x: x // 15)?
medium
A. 0 10 1 20 2 30 3 40 Name: score, dtype: int64
B. 0 0 1 1 2 2 3 3 Name: score, dtype: int64
C. 0 0 1 0 2 1 3 2 Name: score, dtype: int64
D. 0 0 1 1 2 2 3 2 Name: score, dtype: int64

Solution

  1. Step 1: Apply the lambda function to each value

    Divide each score by 15 using floor division:
    10 // 15 = 0
    20 // 15 = 1
    30 // 15 = 2
    40 // 15 = 2
  2. Step 2: Write the resulting Series

    The output Series is:
    0 0
    1 1
    2 2
    3 2
  3. Final Answer:

    0 0 1 1 2 2 3 2 Name: score, dtype: int64 -> Option D
  4. Quick Check:

    Floor division on each value = output [OK]
Hint: Apply lambda to each value and calculate carefully [OK]
Common Mistakes:
  • Using normal division instead of floor division
  • Misreading floor division results
  • Confusing output format with DataFrame instead of Series
4. What is wrong with this code snippet?
df['new_col'] = df['value'].apply(x: x + 5)

How can it be fixed?
medium
A. Missing lambda keyword; fix: df['value'].apply(lambda x: x + 5)
B. apply() cannot add numbers; use map() instead
C. Should use square brackets around x; fix: apply([x]: x + 5)
D. Function must be defined outside apply; fix: def f(x): return x+5

Solution

  1. Step 1: Identify syntax error in lambda function

    The code uses x: x + 5 without the lambda keyword, which is required to define an anonymous function.
  2. Step 2: Correct the syntax

    Add lambda before the function: df['value'].apply(lambda x: x + 5).
  3. Final Answer:

    Missing lambda keyword; fix: df['value'].apply(lambda x: x + 5) -> Option A
  4. Quick Check:

    Lambda keyword needed for inline functions [OK]
Hint: Always use 'lambda' before inline functions in apply() [OK]
Common Mistakes:
  • Omitting the lambda keyword
  • Using incorrect brackets or syntax for lambda
  • Thinking apply() can't use inline functions
5. You have a DataFrame df with a column 'temperature' in Celsius. You want to create a new column 'temp_f' with Fahrenheit values using apply(). Which code correctly does this?
hard
A. df['temp_f'] = df.apply(lambda c: (c * 9/5) + 32)
B. df['temp_f'] = df['temperature'].apply(lambda c: (c * 9/5) + 32)
C. df['temp_f'] = df['temperature'].apply(lambda c: c + 32 * 9/5)
D. df['temp_f'] = df['temperature'].apply(lambda c: c * (9/5 + 32))

Solution

  1. Step 1: Recall the formula for Celsius to Fahrenheit

    The correct formula is Fahrenheit = (Celsius * 9/5) + 32.
  2. Step 2: Check each option's lambda function

    df['temp_f'] = df['temperature'].apply(lambda c: (c * 9/5) + 32) correctly applies the formula to each value in 'temperature'. df['temp_f'] = df.apply(lambda c: (c * 9/5) + 32) applies to whole DataFrame, C and D have incorrect formulas.
  3. Final Answer:

    df['temp_f'] = df['temperature'].apply(lambda c: (c * 9/5) + 32) -> Option B
  4. Quick Check:

    Use correct formula inside apply() on the column [OK]
Hint: Use correct formula inside lambda for each column value [OK]
Common Mistakes:
  • Applying function to whole DataFrame instead of column
  • Mixing order of operations in formula
  • Forgetting parentheses in formula
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