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 Pandas
import pandas as pd # Concatenate DataFrames vertically (stack rows) combined_df = pd.concat([df1, df2], axis=0, ignore_index=True) # Concatenate DataFrames horizontally (stack columns) combined_df = pd.concat([df1, df2], axis=1)
axis=0 stacks rows (one below the other).
axis=1 stacks columns (side by side).
ignore_index=True resets the row numbers.import pandas as pd df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}) # Vertical concat (stack rows) result = pd.concat([df1, df2], axis=0, ignore_index=True) print(result)
import pandas as pd df1 = pd.DataFrame({'A': [1, 2]}) df2 = pd.DataFrame({'B': [3, 4]}) # Horizontal concat (stack columns) result = pd.concat([df1, df2], axis=1) print(result)
import pandas as pd # Edge case: empty DataFrame empty_df = pd.DataFrame() df = pd.DataFrame({'A': [1, 2]}) result = pd.concat([empty_df, df], axis=0, ignore_index=True) print(result)
import pandas as pd df_single = pd.DataFrame({'A': [10]}) df_another = pd.DataFrame({'A': [20]}) # Concatenate single-row DataFrames result = pd.concat([df_single, df_another], axis=0, ignore_index=True) print(result)
This program creates two small tables for sales in January and February. 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) # Combine sales data vertically (stack rows) all_sales = pd.concat([sales_jan, sales_feb], axis=0, ignore_index=True) print('\nAll Sales Combined:') print(all_sales)
Time complexity: Concatenation takes time proportional to the total size of all DataFrames combined.
Space complexity: Requires memory to hold all combined data.
Common mistake: Forgetting ignore_index=True can keep old row numbers, causing duplicate indices.
Use concat() to stack data vertically or horizontally. For merging based on keys, use merge() instead.
concat() joins DataFrames by stacking rows or columns.
Use axis=0 to stack rows, axis=1 to stack columns.
Remember to reset index with ignore_index=True when stacking rows.
Practice
concat() function do in pandas?Solution
Step 1: Understand the purpose of
concat()concat()is used to combine multiple DataFrames either by stacking rows or columns.Step 2: Compare with other DataFrame operations
Deleting, sorting, or filtering are different operations and not related toconcat().Final Answer:
Joins DataFrames by stacking rows or columns -> Option BQuick Check:
concat()stacks DataFrames [OK]
- Confusing concat with filtering or sorting
- Thinking concat deletes data
- Assuming concat only merges columns
df1 and df2 vertically using concat()?Solution
Step 1: Identify axis for vertical stacking
Vertical stacking means stacking rows, which is done withaxis=0.Step 2: Check syntax correctness
pd.concat()requires a list of DataFrames as first argument, so[df1, df2]is correct.Final Answer:
pd.concat([df1, df2], axis=0) -> Option DQuick Check:
Vertical stack uses axis=0 [OK]
- Using axis=1 for vertical stacking
- Passing DataFrames without a list
- Trying to add DataFrames with + inside concat
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?
Solution
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.Step 2: Confirm output structure
The columns remain the same ('A' and 'B'), rows are stacked, and index is reset.Final Answer:
DataFrame with 4 rows, index reset from 0 to 3 -> Option CQuick Check:
ignore_index=True resets index [OK]
- Forgetting ignore_index resets index
- Thinking columns stack horizontally by default
- Assuming error with ignore_index parameter
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 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.Step 2: Identify correct usage
The correct call ispd.concat([df1, df2], axis=0)with a list.Final Answer:
pd.concat requires a list of DataFrames as first argument -> Option AQuick Check:
pd.concat([df1, df2]) needs list [OK]
- Passing DataFrames as separate arguments
- Confusing axis parameter meaning
- Assuming columns must match exactly
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?
Solution
Step 1: Understand vertical stacking with different columns
Stacking vertically withaxis=0combines rows. Since columns differ, missing columns get NaN by default.Step 2: Check parameters for desired behavior
ignore_index=Trueresets index. Defaultjoin='outer'keeps all columns and fills missing with NaN.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') usesjoin='inner'which keeps only common columns.Final Answer:
pd.concat([df1, df2], axis=0, ignore_index=True) -> Option AQuick Check:
axis=0 + default join='outer' keeps all columns [OK]
- Using axis=1 to stack rows
- Using join='inner' and losing columns
- Filling NaN when not needed
Ready to prove it?
Pass the test and this pattern moves unknown
