We use concat() to join two or more tables (DataFrames) together. It helps us combine data from different sources into one big table.
concat() for stacking DataFrames in Data Analysis Python
import pandas as pd # Create DataFrames df1 = pd.DataFrame(data1) df2 = pd.DataFrame(data2) # Concatenate DataFrames vertically (stack rows) result = pd.concat([df1, df2], axis=0, ignore_index=True) # Concatenate DataFrames horizontally (stack columns) result = pd.concat([df1, df2], axis=1)
axis=0 stacks rows (one below the other).
axis=1 stacks columns (side by side).
import pandas as pd df_empty = pd.DataFrame() df_one = pd.DataFrame({'A': [1]}) df_two = pd.DataFrame({'A': [2], 'B': [3]}) # Concatenate empty and one-row DataFrame result1 = pd.concat([df_empty, df_one], ignore_index=True) # Concatenate one-row and two-column DataFrame result2 = pd.concat([df_one, df_two], ignore_index=True) print(result1) print(result2)
import pandas as pd df_start = pd.DataFrame({'A': [10, 20]}) df_end = pd.DataFrame({'A': [30, 40]}) # Stack df_end below df_start result = pd.concat([df_start, df_end], ignore_index=True) print(result)
import pandas as pd df_left = pd.DataFrame({'A': [1, 2]}) df_right = pd.DataFrame({'B': [3, 4]}) # Stack columns side by side result = pd.concat([df_left, df_right], axis=1) print(result)
This program creates two small tables for January and February sales. Then it stacks them vertically to see all sales together.
import pandas as pd # Create two DataFrames with sales data sales_jan = pd.DataFrame({ 'Product': ['Apple', 'Banana'], 'Sales': [100, 150] }) sales_feb = pd.DataFrame({ 'Product': ['Apple', 'Banana'], 'Sales': [120, 130] }) print('Sales January:') print(sales_jan) print('\nSales February:') print(sales_feb) # Stack the two DataFrames vertically to combine months all_sales = pd.concat([sales_jan, sales_feb], axis=0, ignore_index=True) print('\nCombined Sales:') print(all_sales)
Time complexity: Concatenation runs in O(n) where n is total rows or columns combined.
Space complexity: Requires extra space to hold the combined DataFrame.
Common mistake: Forgetting ignore_index=True can keep old row numbers, causing confusion.
Use concat() when you want to stack DataFrames. Use merge() or join() when you want to combine based on matching columns.
concat() stacks DataFrames vertically or horizontally.
Use axis=0 to add rows, axis=1 to add columns.
Remember to use ignore_index=True to reset row numbers after stacking rows.
Practice
concat() function do when stacking DataFrames with axis=0?Solution
Step 1: Understand axis parameter in concat()
Theaxis=0means stacking along rows, so new rows are added below existing ones.Step 2: Differentiate vertical vs horizontal stacking
Vertical stacking adds rows; horizontal stacking (axis=1) adds columns side by side.Final Answer:
It stacks DataFrames vertically by adding rows. -> Option CQuick Check:
axis=0 means vertical stacking [OK]
- Confusing axis=0 with horizontal stacking
- Thinking concat merges like join
- Assuming concat sorts data automatically
df1 and df2 vertically and reset the index?Solution
Step 1: Check the concat() function syntax
Correct syntax requires a list of DataFrames as first argument, e.g.,[df1, df2].Step 2: Confirm axis and ignore_index usage
To stack vertically and reset index, useaxis=0andignore_index=True.Final Answer:
pd.concat([df1, df2], axis=0, ignore_index=True) -> Option BQuick Check:
List + axis=0 + ignore_index=True = correct syntax [OK]
- Passing DataFrames without list brackets
- Using axis=1 for vertical stacking
- Forgetting ignore_index to reset row numbers
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5], 'B': [6]})
result = pd.concat([df1, df2], axis=0, ignore_index=True)
print(result)What is the output?
Solution
Step 1: Understand concat with axis=0 and ignore_index=True
Rows from df2 are added below df1, and index resets from 0 to 2.Step 2: Combine rows and reset index
Result has 3 rows with index 0,1,2 and columns A and B filled accordingly.Final Answer:
A B 0 1 3 1 2 4 2 5 6 -> Option AQuick Check:
concat vertical + ignore_index resets index [OK]
- Expecting original index to remain
- Confusing axis=0 with axis=1 output
- Forgetting to pass DataFrames as list
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)Solution
Step 1: Check concat() argument format
concat() expects a list of DataFrames as first argument, but here two DataFrames are passed separately.Step 2: Identify correct usage
Correct call ispd.concat([df1, df2], axis=0)with brackets around DataFrames.Final Answer:
Missing list brackets around DataFrames in concat. -> Option AQuick Check:
concat needs list of DataFrames [OK]
- Passing DataFrames as separate arguments
- Assuming axis=0 is invalid
- Thinking ignore_index is mandatory
df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Score': [85, 90]})
df2 = pd.DataFrame({'Name': ['Charlie'], 'Score': [88]})You want to stack them vertically but keep the original index from both DataFrames. Which code will do this correctly?
Solution
Step 1: Understand index behavior in concat()
By default, concat keeps original indexes unlessignore_index=Trueis set.Step 2: Choose correct parameters
To stack vertically and keep indexes, useaxis=0withoutignore_index.Final Answer:
pd.concat([df1, df2], axis=0) -> Option DQuick Check:
Default concat keeps original index [OK]
- Using ignore_index=True when original index is needed
- Using axis=1 for vertical stacking
- Passing DataFrames without list brackets
Ready to prove it?
Pass the test and this pattern moves unknown
