Bird
Raised Fist0
Pandasdata~15 mins

concat() for stacking DataFrames in Pandas - Mini Project: Build & Apply

Choose your learning style10 modes available
Stacking DataFrames using concat()
📖 Scenario: You work in a small store that tracks sales in two separate lists for two days. You want to combine these lists into one to see all sales together.
🎯 Goal: Combine two sales DataFrames into one using concat() to stack them vertically.
📋 What You'll Learn
Create two DataFrames named sales_day1 and sales_day2 with given data
Create a variable all_sales that stacks the two DataFrames vertically using pd.concat()
Print the combined DataFrame all_sales
💡 Why This Matters
🌍 Real World
Combining sales data from multiple days or stores helps businesses analyze total sales easily.
💼 Career
Data scientists often combine data from different sources to prepare it for analysis or reporting.
Progress0 / 4 steps
1
Create two sales DataFrames
Create a DataFrame called sales_day1 with columns 'Product' and 'Quantity' and these rows: 'Apple', 10 and 'Banana', 5. Also create a DataFrame called sales_day2 with the same columns and these rows: 'Orange', 7 and 'Banana', 3.
Pandas
Hint

Use pd.DataFrame() with a dictionary where keys are column names and values are lists of column values.

2
Set concat axis for stacking
Create a variable called axis and set it to 0 to stack DataFrames vertically using pd.concat().
Pandas
Hint

Use axis = 0 because stacking means adding rows.

3
Stack the DataFrames using concat()
Use pd.concat() with the list [sales_day1, sales_day2] and the variable axis to create a new DataFrame called all_sales that stacks the two DataFrames vertically.
Pandas
Hint

Pass a list of DataFrames to pd.concat() and set axis=0 to stack rows.

4
Print the combined DataFrame
Print the DataFrame all_sales to see the stacked sales data.
Pandas
Hint

Use print(all_sales) to display the combined DataFrame.

Practice

(1/5)
1. What does the concat() function do in pandas?
easy
A. Deletes rows from a DataFrame
B. Joins DataFrames by stacking rows or columns
C. Sorts the DataFrame by index
D. Filters rows based on a condition

Solution

  1. Step 1: Understand the purpose of concat()

    concat() is used to combine multiple DataFrames either by stacking rows or columns.
  2. Step 2: Compare with other DataFrame operations

    Deleting, sorting, or filtering are different operations and not related to concat().
  3. Final Answer:

    Joins DataFrames by stacking rows or columns -> Option B
  4. Quick Check:

    concat() stacks DataFrames [OK]
Hint: Remember: concat stacks rows or columns [OK]
Common Mistakes:
  • Confusing concat with filtering or sorting
  • Thinking concat deletes data
  • Assuming concat only merges columns
2. Which of the following is the correct syntax to stack two DataFrames df1 and df2 vertically using concat()?
easy
A. pd.concat(df1 + df2)
B. pd.concat([df1, df2], axis=1)
C. pd.concat(df1, df2)
D. pd.concat([df1, df2], axis=0)

Solution

  1. Step 1: Identify axis for vertical stacking

    Vertical stacking means stacking rows, which is done with axis=0.
  2. Step 2: Check syntax correctness

    pd.concat() requires a list of DataFrames as first argument, so [df1, df2] is correct.
  3. Final Answer:

    pd.concat([df1, df2], axis=0) -> Option D
  4. Quick Check:

    Vertical stack uses axis=0 [OK]
Hint: Use axis=0 to stack rows vertically [OK]
Common Mistakes:
  • Using axis=1 for vertical stacking
  • Passing DataFrames without a list
  • Trying to add DataFrames with + inside concat
3. Given the following code:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2], ignore_index=True)
print(result)

What is the output?
medium
A. DataFrame with 4 rows, original indexes 0,1,0,1
B. DataFrame with 2 rows, columns stacked horizontally
C. DataFrame with 4 rows, index reset from 0 to 3
D. Error because ignore_index is invalid

Solution

  1. Step 1: Understand concat with ignore_index=True

    Concatenating df1 and df2 vertically stacks rows, resulting in 4 rows total. ignore_index=True resets the index to 0,1,2,3.
  2. Step 2: Confirm output structure

    The columns remain the same ('A' and 'B'), rows are stacked, and index is reset.
  3. Final Answer:

    DataFrame with 4 rows, index reset from 0 to 3 -> Option C
  4. Quick Check:

    ignore_index=True resets index [OK]
Hint: ignore_index=True resets row numbers after stacking [OK]
Common Mistakes:
  • Forgetting ignore_index resets index
  • Thinking columns stack horizontally by default
  • Assuming error with ignore_index parameter
4. What is wrong with this code snippet?
import pandas as pd
df1 = pd.DataFrame({'X': [1, 2]})
df2 = pd.DataFrame({'Y': [3, 4]})
result = pd.concat(df1, df2, axis=0)
print(result)
medium
A. pd.concat requires a list of DataFrames as first argument
B. axis=0 stacks columns instead of rows
C. DataFrames must have same columns to concat
D. ignore_index=True is missing

Solution

  1. Step 1: Check pd.concat argument format

    pd.concat() expects a list or iterable of DataFrames as the first argument, but here two DataFrames are passed as separate arguments.
  2. Step 2: Identify correct usage

    The correct call is pd.concat([df1, df2], axis=0) with a list.
  3. Final Answer:

    pd.concat requires a list of DataFrames as first argument -> Option A
  4. Quick Check:

    pd.concat([df1, df2]) needs list [OK]
Hint: Always pass DataFrames as a list to concat [OK]
Common Mistakes:
  • Passing DataFrames as separate arguments
  • Confusing axis parameter meaning
  • Assuming columns must match exactly
5. You have two DataFrames:
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'B': [5, 6], 'C': [7, 8]})

You want to stack them vertically and keep all columns, filling missing values with NaN. Which code will do this correctly?
hard
A. pd.concat([df1, df2], axis=0, ignore_index=True)
B. pd.concat([df1, df2], axis=1)
C. pd.concat([df1, df2], axis=0).fillna(0)
D. pd.concat([df1, df2], axis=0, join='inner')

Solution

  1. Step 1: Understand vertical stacking with different columns

    Stacking vertically with axis=0 combines rows. Since columns differ, missing columns get NaN by default.
  2. Step 2: Check parameters for desired behavior

    ignore_index=True resets index. Default join='outer' keeps all columns and fills missing with NaN.
  3. Step 3: Evaluate other options

    pd.concat([df1, df2], axis=1) stacks columns horizontally, not vertically. pd.concat([df1, df2], axis=0).fillna(0) fills NaN with 0, not requested. pd.concat([df1, df2], axis=0, join='inner') uses join='inner' which keeps only common columns.
  4. Final Answer:

    pd.concat([df1, df2], axis=0, ignore_index=True) -> Option A
  5. Quick Check:

    axis=0 + default join='outer' keeps all columns [OK]
Hint: Use axis=0 and default join to keep all columns [OK]
Common Mistakes:
  • Using axis=1 to stack rows
  • Using join='inner' and losing columns
  • Filling NaN when not needed
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