📖 Scenario: You work in a small bookstore. You have a list of books with their prices and quantities sold. You want to calculate the total sales for each book.
🎯 Goal: Build a pandas DataFrame with book data, then use apply() with a lambda function to calculate total sales for each book.
📋 What You'll Learn
Create a pandas DataFrame called books with columns 'Title', 'Price', and 'Quantity' using the exact data provided.
Create a variable called calculate_sales that holds a lambda function to multiply Price and Quantity.
Use apply() with the calculate_sales lambda function on the DataFrame rows to create a new column 'TotalSales'.
Print the books DataFrame to show the new 'TotalSales' column.
💡 Why This Matters
🌍 Real World
Calculating total sales for products is a common task in retail and business analytics to understand revenue.
💼 Career
Data analysts and data scientists often use pandas apply() with lambda functions to quickly transform and analyze tabular data.
Progress0 / 4 steps
1
Create the books DataFrame
Import pandas as pd and create a DataFrame called books with these exact columns and data: 'Title' with values 'Book A', 'Book B', 'Book C'; 'Price' with values 10.0, 15.5, 8.75; and 'Quantity' with values 5, 3, 10.
Pandas
Hint
Use pd.DataFrame with a dictionary where keys are column names and values are lists of data.
2
Create a lambda function to calculate sales
Create a variable called calculate_sales and assign it a lambda function that takes a row and returns the product of the 'Price' and 'Quantity' columns from that row.
Pandas
Hint
The lambda function should take one argument (a row) and return row['Price'] * row['Quantity'].
3
Use apply() with the lambda function
Use the apply() method on the books DataFrame with the calculate_sales lambda function and axis=1 to apply it row-wise. Assign the result to a new column called 'TotalSales' in the books DataFrame.
Pandas
Hint
Remember to use axis=1 to apply the function to each row.
4
Print the DataFrame with total sales
Write a print() statement to display the books DataFrame with the new 'TotalSales' column.
Pandas
Hint
Use print(books) to show the DataFrame.
Practice
(1/5)
1. What does the apply() function with a lambda do in pandas?
easy
A. It sorts the DataFrame by column values.
B. It applies a small function to each element in a DataFrame column or row.
C. It merges two DataFrames based on a key.
D. It creates a new DataFrame from scratch.
Solution
Step 1: Understand the purpose of apply() with lambda
The apply() method lets you run a function on each element or row/column of a DataFrame or Series.
Step 2: Recognize what lambda does
A lambda is a small anonymous function used inside apply() to specify what to do with each element.
Final Answer:
It applies a small function to each element in a DataFrame column or row. -> Option B
Quick Check:
apply() + lambda = element-wise function [OK]
Hint: apply() runs a function on each item quickly [OK]
Common Mistakes:
Thinking apply() sorts data
Confusing apply() with merge or join
Believing apply() creates new DataFrames
2. Which of the following is the correct syntax to use apply() with a lambda on a pandas Series named data to double each value?
easy
A. data.apply(lambda x: x * 2)
B. data.apply(x => x * 2)
C. apply(data, lambda x: x * 2)
D. data.apply(lambda x x * 2)
Solution
Step 1: Recall correct lambda syntax in Python
Python lambda functions use the format lambda x: expression, so lambda x: x * 2 is correct.
Step 2: Check apply() usage on Series
The method call is data.apply(lambda x: x * 2). Other options have syntax errors or wrong order.
Final Answer:
data.apply(lambda x: x * 2) -> Option A
Quick Check:
Correct lambda syntax = data.apply(lambda x: x * 2) [OK]
Hint: Use colon after lambda parameter: lambda x: ... [OK]
Common Mistakes:
Using arrow syntax (=>) from other languages
Missing colon after lambda parameter
Calling apply() as a standalone function
3. Given the DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3]})
df['B'] = df['A'].apply(lambda x: x + 5)
print(df)
What is the output?
medium
A. Error: lambda function syntax
B. A B
0 1 5
1 2 6
2 3 7
C. A B
0 1 6
1 2 7
2 3 8
D. A B
0 6 1
1 7 2
2 8 3
Solution
Step 1: Understand the lambda function applied
The lambda adds 5 to each value in column 'A'. So 1+5=6, 2+5=7, 3+5=8.
Step 2: Check DataFrame after assignment
Column 'B' gets these new values, while 'A' remains unchanged.
Final Answer:
A B
0 1 6
1 2 7
2 3 8 -> Option C
Quick Check:
Original + 5 = New column [OK]
Hint: apply() changes each value as per lambda [OK]
Common Mistakes:
Mixing up columns A and B
Forgetting to add 5 inside lambda
Expecting error from correct syntax
4. What is wrong with this code snippet?
df['C'] = df['A'].apply(lambda x x * 3)
medium
A. Missing colon after lambda parameter causes syntax error.
B. apply() cannot be used on DataFrame columns.
C. lambda functions cannot multiply values.
D. Column 'C' does not exist yet.
Solution
Step 1: Check lambda function syntax
Python lambda requires a colon after parameters: lambda x: x * 3. The code misses the colon.
Step 2: Understand error cause
Missing colon causes a syntax error, so code won't run.
Final Answer:
Missing colon after lambda parameter causes syntax error. -> Option A
Quick Check:
lambda syntax error = missing colon [OK]
Hint: Always put colon after lambda parameters [OK]
Common Mistakes:
Forgetting colon after lambda parameter
Thinking apply() can't be used on columns
Assuming new columns must exist before assignment
5. You have a DataFrame df with a column 'score' containing numbers. You want to create a new column 'grade' that says 'Pass' if the score is 50 or more, and 'Fail' otherwise. Which code correctly uses apply() with a lambda to do this?
hard
A. df['grade'] = df.apply(lambda x: 'Pass' if x['score'] >= 50 else 'Fail')
B. df['grade'] = df['score'].apply(lambda x: if x >= 50 then 'Pass' else 'Fail')
C. df['grade'] = df['score'].apply(lambda x: x >= 50 ? 'Pass' : 'Fail')
D. df['grade'] = df['score'].apply(lambda x: 'Pass' if x >= 50 else 'Fail')
Solution
Step 1: Understand conditional expression in lambda
Python uses value_if_true if condition else value_if_false syntax inside lambda.
Step 2: Check application target and syntax
Applying to the Series df['score'] with lambda x: 'Pass' if x >= 50 else 'Fail' is correct, as x is each scalar score. Applying to the whole df (without axis=1) passes column Series to lambda, where x['score'] causes KeyError. Syntaxes like ? : ternary or if-then are invalid in Python.
Final Answer:
df['grade'] = df['score'].apply(lambda x: 'Pass' if x >= 50 else 'Fail') -> Option D
Quick Check:
Correct if-else in lambda = df['grade'] = df['score'].apply(lambda x: 'Pass' if x >= 50 else 'Fail') [OK]
Hint: Use Python's if-else inside lambda: val_if_true if cond else val_if_false [OK]
Common Mistakes:
Using ?: ternary operator from other languages
Applying lambda on whole DataFrame without axis
Writing if-else without proper Python syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.