📖 Scenario: You work in a small bookstore. You have two lists: one with book details and another with sales data. You want to combine these lists to see which books sold and their prices.
🎯 Goal: Learn how to use pandas.merge() to join two tables like in SQL. You will combine book details with sales data to get a full picture.
📋 What You'll Learn
Create two pandas DataFrames with exact data
Set a variable for the join key column
Use pandas.merge() to join the DataFrames on the key
Print the merged DataFrame
💡 Why This Matters
🌍 Real World
Combining data from different sources is common in business, like joining sales records with product details to analyze performance.
💼 Career
Data scientists and analysts often use joins to prepare data for reports, dashboards, and machine learning models.
Progress0 / 4 steps
1
Create the book details DataFrame
Create a pandas DataFrame called books with these exact columns and data: book_id as [101, 102, 103], title as ['Python Basics', 'Data Science 101', 'Machine Learning'], and price as [25.0, 30.0, 45.0].
Pandas
Hint
Use pd.DataFrame with a dictionary where keys are column names and values are lists of data.
2
Create the sales DataFrame and set join key
Create a pandas DataFrame called sales with columns book_id as [101, 103, 104] and copies_sold as [150, 200, 50]. Then create a variable called join_key and set it to the string 'book_id'.
Pandas
Hint
Use pd.DataFrame again for sales. Then assign join_key = 'book_id'.
3
Merge the DataFrames using merge()
Use pandas.merge() to join books and sales on the column stored in join_key. Store the result in a variable called merged_data. Use an inner join (default).
Pandas
Hint
Use pd.merge(books, sales, on=join_key) and assign it to merged_data.
4
Print the merged DataFrame
Print the variable merged_data to see the combined table.
Pandas
Hint
Use print(merged_data) to show the combined table.
Practice
(1/5)
1. What does the merge() function in pandas do?
easy
A. It filters rows based on a condition.
B. It sorts a DataFrame by column values.
C. It changes the data type of a column.
D. It combines two DataFrames based on matching columns.
Solution
Step 1: Understand the purpose of merge()
The merge() function is designed to combine two tables (DataFrames) by matching values in specified columns.
Step 2: Compare with other options
Sorting, filtering, and changing data types are different operations and not the main purpose of merge().
Final Answer:
It combines two DataFrames based on matching columns. -> Option D
Quick Check:
merge() joins tables on columns [OK]
Hint: merge() joins tables by matching columns [OK]
Common Mistakes:
Confusing merge() with sort or filter functions
Thinking merge() changes data types
Assuming merge() works without matching columns
2. Which of the following is the correct syntax to perform an inner join of two DataFrames df1 and df2 on column 'id' using pandas?
easy
A. df1.merge(df2, by='id', join='inner')
B. pd.merge(df1, df2, on='id', how='inner')
C. pd.join(df1, df2, on='id', how='inner')
D. df1.merge(df2, on='id', how='outer')
Solution
Step 1: Recall correct merge syntax
The correct pandas syntax for merging is pd.merge(left, right, on=column, how=type). Here, how='inner' specifies an inner join.
Step 2: Check each option
pd.merge(df1, df2, on='id', how='inner') matches the correct syntax. df1.merge(df2, by='id', join='inner') uses wrong parameter names. pd.join(df1, df2, on='id', how='inner') uses pd.join which does not exist. df1.merge(df2, on='id', how='outer') uses how='outer' which is not inner join.
Final Answer:
pd.merge(df1, df2, on='id', how='inner') -> Option B
You want to create a DataFrame showing all customers and their orders, including customers with no orders and orders with no matching customer. Which merge() call achieves this?
hard
A. pd.merge(df_customers, df_orders, on='customer_id', how='left')
B. pd.merge(df_customers, df_orders, on='customer_id', how='inner')
C. pd.merge(df_customers, df_orders, on='customer_id', how='outer')
D. pd.merge(df_customers, df_orders, on='customer_id', how='right')
Solution
Step 1: Understand join types
An outer join keeps all rows from both DataFrames, filling missing matches with NaN.
Step 2: Apply to problem context
We want all customers (even without orders) and all orders (even without matching customers). Only outer join includes all rows from both sides.
Final Answer:
pd.merge(df_customers, df_orders, on='customer_id', how='outer') -> Option C
Quick Check:
Outer join includes all rows from both tables [OK]
Hint: Use how='outer' to keep all rows from both DataFrames [OK]
Common Mistakes:
Using inner join excludes unmatched rows
Left join excludes orders without customers
Right join excludes customers without orders
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.