Pandas DataFrame align() Function

In this tutorial, we will learn the python pandas DataFrame.align() method. This method aligns two objects on their axes with the specified join method. This method is helpful when we want to synchronize a dataframe with another dataframe or a dataframe with a Series using different join methods like the outer, inner, left, and right.

Syntax

The syntax required to use this function is as follows.

DataFrame.align(other, join='outer', axis=None, level=None, copy=True, fill_value=None, method=None, limit=None, fill_axis=0, broadcast_axis=None)

Parameters:

other: It can be a DataFrame or Series.

join: 'outer', 'inner', 'left', 'right'. The default is 'outer' join.

axis: the allowed axis of the other object, default None. Align on the index (0), columns (1), or both (None).

level: int or level name, default None. Broadcast across a level, matching Index values on the passed MultiIndex level.

copy: bool, default True. Always returns new objects. If copy=False and no reindexing is required then original objects are returned.

fill_value: scalar, default np.NaN. Value to use for missing values. Defaults to NaN, but can be any “compatible” value.

method{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None

limit: int, default None.

fill_axis {0 or ‘index’, 1 or ‘columns’}, default 0. Filling axis, method, and limit.

broadcast_axis {0 or ‘index’, 1 or ‘columns’}, default None. Broadcast values along this axis, if aligning two objects of different dimensions.

Example: Create and print the DataFrame

Create two dataframes with different indexes, columns and print the output.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
print("----------Printing DataFrame 1----------")
print(df1)
print("----------Printing DataFrame 2----------")
print(df2)

Once we run the program we will get the following result.


----------Printing DataFrame 1----------
Name Roll No Subject Marks
1 Abhishek 100 Science 90
2 Anurag 101 Science 85
----------Printing DataFrame 2----------
Name Roll No Marks
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92

Example: Align with Left Join on Columns(axis=1)

The below example shows how to align two different dataframes with left join on columns.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
a1, a2 = df1.align(df2, join='left', axis=1)
print("---------After Aligning to the left DataFrame 1--------")
print(a1)
print("---------After Aligning to the left DataFrame 2--------")
print(a2)

Once we run the program we will get the following result.


---------After Aligning to the left DataFrame 1--------
Name Roll No Subject Marks
1 Abhishek 100 Science 90
2 Anurag 101 Science 85
---------After Aligning to the left DataFrame 2--------
Name Roll No Subject Marks
2 Chetan 103 NaN 75
3 Divya 104 NaN 80
4 Diya 105 NaN 92

Example: Align with right Join on Columns (axis=1)

The below example shows how to align two different dataframes with the right join on columns.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
a1, a2 = df1.align(df2, join='right', axis=1)
print("---------After Aligning to the right DataFrame 1--------")
print(a1)
print("---------After Aligning to the right DataFrame 2--------")
print(a2)

Once we run the program we will get the following result.


---------After Aligning to the right DataFrame 1--------
Name Roll No Marks
1 Abhishek 100 90
2 Anurag 101 85
---------After Aligning to the right DataFrame 2--------
Name Roll No Marks
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92

Example: Align with outer Join on Columns(axis=1)

The below example shows how to align two different dataframes with outer join on columns.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
a1, a2 = df1.align(df2, join='outer', axis=1)
print("---------After Aligning to the outer DataFrame 1--------")
print(a1)
print("---------After Aligning to the outer DataFrame 2--------")
print(a2)

Once we run the program we will get the following result.


---------After Aligning to the outer DataFrame 1--------
Marks Name Roll No Subject
1 90 Abhishek 100 Science
2 85 Anurag 101 Science
---------After Aligning to the outer DataFrame 2--------
Marks Name Roll No Subject
2 75 Chetan 103 NaN
3 80 Divya 104 NaN
4 92 Diya 105 NaN

Example: Align with inner Join on Columns(axis=1)

The below example shows how to align two different dataframes with left join on columns.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
a1, a2 = df1.align(df2, join='inner', axis=1)
print("---------After Aligning to the inner DataFrame 1--------")
print(a1)
print("---------After Aligning to the inner DataFrame 2--------")
print(a2)

Once we run the program we will get the following result.


---------After Aligning to the inner DataFrame 1--------
Name Roll No Marks
1 Abhishek 100 90
2 Anurag 101 85
---------After Aligning to the inner DataFrame 2--------
Name Roll No Marks
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92

Example: Align with Left Join on the index(axis=0)

The below example shows how to align two different dataframes with left join on index.

df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2])
df2 = pd.DataFrame([['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4])
a1, a2 = df1.align(df2, join='left', axis=0)
print("---------After Aligning to the left with axis=0, DataFrame 1--------")
print(a1)
print("---------After Aligning to the left with axis=0, DataFrame 2--------")
print(a2)

Once we run the program we will get the following result.


---------After Aligning to the left with axis=0, DataFrame 1--------
Name Roll No Subject Marks
1 Abhishek 100 Science 90
2 Anurag 101 Science 85
---------After Aligning to the left with axis=0, DataFrame 2--------
Name Roll No Marks
1 NaN NaN NaN
2 Chetan 103.0 75.0

Conclusion

In this tutorial we learned the python pandas DataFrame.align() method. We understand the syntax, parameters, and solved examples by different join methods and axis.