pandas.DataFrame.align — pandas 3.0.0.dev0+2095.g2e141aaf99 documentation (original) (raw)
DataFrame.align(other, join='outer', axis=None, level=None, copy=<no_default>, fill_value=None)[source]#
Align two objects on their axes with the specified join method.
Join method is specified for each axis Index.
Parameters:
otherDataFrame or Series
The object to align with.
join{‘outer’, ‘inner’, ‘left’, ‘right’}, default ‘outer’
Type of alignment to be performed.
- left: use only keys from left frame, preserve key order.
- right: use only keys from right frame, preserve key order.
- outer: use union of keys from both frames, sort keys lexicographically.
- inner: use intersection of keys from both frames, preserve the order of the left keys.
axisallowed axis of the other object, default None
Align on index (0), columns (1), or both (None).
levelint or level name, default None
Broadcast across a level, matching Index values on the passed MultiIndex level.
copybool, default False
Always returns new objects. If copy=False and no reindexing is required then original objects are returned.
Note
The copy keyword will change behavior in pandas 3.0.Copy-on-Writewill be enabled by default, which means that all methods with acopy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.
You can already get the future behavior and improvements through enabling copy on write pd.options.mode.copy_on_write = True
Deprecated since version 3.0.0.
fill_valuescalar, default np.nan
Value to use for missing values. Defaults to NaN, but can be any “compatible” value.
Returns:
tuple of (Series/DataFrame, type of other)
Aligned objects.
See also
Align two objects on their axes with specified join method.
Align two objects on their axes with specified join method.
Examples
df = pd.DataFrame( ... [[1, 2, 3, 4], [6, 7, 8, 9]], columns=["D", "B", "E", "A"], index=[1, 2] ... ) other = pd.DataFrame( ... [[10, 20, 30, 40], [60, 70, 80, 90], [600, 700, 800, 900]], ... columns=["A", "B", "C", "D"], ... index=[2, 3, 4], ... ) df D B E A 1 1 2 3 4 2 6 7 8 9 other A B C D 2 10 20 30 40 3 60 70 80 90 4 600 700 800 900
Align on columns:
left, right = df.align(other, join="outer", axis=1) left A B C D E 1 4 2 NaN 1 3 2 9 7 NaN 6 8 right A B C D E 2 10 20 30 40 NaN 3 60 70 80 90 NaN 4 600 700 800 900 NaN
We can also align on the index:
left, right = df.align(other, join="outer", axis=0) left D B E A 1 1.0 2.0 3.0 4.0 2 6.0 7.0 8.0 9.0 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN right A B C D 1 NaN NaN NaN NaN 2 10.0 20.0 30.0 40.0 3 60.0 70.0 80.0 90.0 4 600.0 700.0 800.0 900.0
Finally, the default axis=None will align on both index and columns:
left, right = df.align(other, join="outer", axis=None) left A B C D E 1 4.0 2.0 NaN 1.0 3.0 2 9.0 7.0 NaN 6.0 8.0 3 NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN right A B C D E 1 NaN NaN NaN NaN NaN 2 10.0 20.0 30.0 40.0 NaN 3 60.0 70.0 80.0 90.0 NaN 4 600.0 700.0 800.0 900.0 NaN