Сообщить об ошибке.

Метод .align() объектов Series/DataFrame в pandas

Выравнивание двух Series/DataFrame по осям с указанным методом соединения

Синтаксис:

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)

Параметры:

  • other - DataFrame или Series.

  • 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