DataFrame.align(other, join='outer', axis=None, level=None, copy=None, fill_value=None) Series.align(other, join='outer', axis=None, level=None, copy=None, fill_value=None)
join='outer'
- тип выполняемого выравнивания:
left
: использует только ключи из левой таблицы, сохраняет порядок ключей.right
: использует только ключи из правой таблицы, сохраняет порядок ключей.outer
: используйте объединение ключей из обоих таблиц, отсортирует ключи лексикографически.inner
: используйте пересечение ключей из обоих таблиц, сохраняет порядок левых ключей.axis=None
- выравнять по индексу (0), столбцам (1) или обоим (None).
level=None
- соответствовать значениям индекса на переданном уровне MultiIndex
.
fill_value=None
- значение, используемое для отсутствующих значений. По умолчанию NaN
, но может быть любым "совместимым" значением.
copy=None
- копирует базовые данные.
Ключевой аргумент
copy
изменит поведение вpandas 3.0
. Копирование при записи будет включено по умолчанию, что означает, что все методы сcopy
будут использовать механизм отложенного копирования. Ключевое слово copy будет удалено в будущей версииpandas
. Эту функциональность уже можно включить установивpd.options.mode.copy_on_write = True
(Series/DataFrame, other type)
.align()
объектов Series
/DataFrame
Метод DataFrame.align()
и Series.align()
модуля выравнивает два объекта по их осям axis
с помощью указанного метода соединения join
. Метод соединения указывается для каждого индекса оси.
Series
/DataFrame
по осям: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
Выравниваем по столбцам:
>>> 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
Можно выровнять индекс:
>>> 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
Наконец, значение по умолчанию axis=None
будет выравнивать как по индексу, так и по столбцам:
>>> 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