def align_to(self, other): """Align to `other` on their axes. Example: ```python-repl >>> import vectorbt as vbt >>> import pandas as pd >>> df1 = pd.DataFrame([[1, 2], [3, 4]], index=['x', 'y'], columns=['a', 'b']) >>> df1 a b x 1 2 y 3 4 >>> df2 = pd.DataFrame([[5, 6, 7, 8], [9, 10, 11, 12]], index=['x', 'y'], ... columns=pd.MultiIndex.from_arrays([[1, 1, 2, 2], ['a', 'b', 'a', 'b']])) >>> df2 1 2 a b a b x 5 6 7 8 y 9 10 11 12 >>> df1.vbt.align_to(df2) 1 2 a b a b x 1 2 1 2 y 3 4 3 4 ```""" checks.assert_type(other, (pd.Series, pd.DataFrame)) obj = reshape_fns.to_2d(self._obj) other = reshape_fns.to_2d(other) aligned_index = index_fns.align_index_to(obj.index, other.index) aligned_columns = index_fns.align_index_to(obj.columns, other.columns) obj = obj.iloc[aligned_index, aligned_columns] return self.wrap(obj.values, index=other.index, columns=other.columns)
def align_to(self, other: tp.SeriesFrame, wrap_kwargs: tp.KwargsLike = None) -> tp.SeriesFrame: """Align to `other` on their axes. ## Example ```python-repl >>> import vectorbt as vbt >>> import pandas as pd >>> df1 = pd.DataFrame([[1, 2], [3, 4]], index=['x', 'y'], columns=['a', 'b']) >>> df1 a b x 1 2 y 3 4 >>> df2 = pd.DataFrame([[5, 6, 7, 8], [9, 10, 11, 12]], index=['x', 'y'], ... columns=pd.MultiIndex.from_arrays([[1, 1, 2, 2], ['a', 'b', 'a', 'b']])) >>> df2 1 2 a b a b x 5 6 7 8 y 9 10 11 12 >>> df1.vbt.align_to(df2) 1 2 a b a b x 1 2 1 2 y 3 4 3 4 ``` """ checks.assert_instance_of(other, (pd.Series, pd.DataFrame)) obj = reshape_fns.to_2d(self.obj) other = reshape_fns.to_2d(other) aligned_index = index_fns.align_index_to(obj.index, other.index) aligned_columns = index_fns.align_index_to(obj.columns, other.columns) obj = obj.iloc[aligned_index, aligned_columns] return self.wrapper.wrap(obj.values, group_by=False, **merge_dicts( dict(index=other.index, columns=other.columns), wrap_kwargs))