pandas.DataFrame.align#

DataFrame.выравнивать(other, join='outer', axis=None, level=None, copy=None, fill_value=None, method=, limit=, fill_axis=, broadcast_axis=)[источник]#

Выровнять два объекта по их осям с указанным методом соединения.

Метод соединения указан для каждого индекса оси.

Параметры:
otherDataFrame или Series
join{‘outer’, ‘inner’, ‘left’, ‘right’}, по умолчанию ‘outer’

Тип выравнивания для выполнения.

  • left: использовать только ключи из левого фрейма, сохраняя порядок ключей.

  • right: использовать только ключи из правого фрейма, сохранять порядок ключей.

  • outer: использовать объединение ключей из обоих фреймов, сортировать ключи лексикографически.

  • inner: использовать пересечение ключей из обоих фреймов, сохраняя порядок ключей слева.

осьразрешенная ось другого объекта, по умолчанию None

Выравнивание по индексу (0), колонкам (1) или обоим (None).

уровеньint или имя уровня, по умолчанию None

Трансляция по уровню, сопоставляя значения Index на переданном уровне MultiIndex.

copybool, по умолчанию True

Всегда возвращает новые объекты. Если copy=False и переиндексация не требуется, то возвращаются исходные объекты.

Примечание

The copy ключевое слово изменит поведение в pandas 3.0. Копирование при записи будет включено по умолчанию, что означает, что все методы с copy ключевое слово будет использовать механизм ленивого копирования для отложенного копирования и игнорирования copy ключевое слово. The copy ключевое слово будет удалено в будущей версии pandas.

Вы уже можете получить будущее поведение и улучшения, включив copy on write pd.options.mode.copy_on_write = True

fill_valueскаляр, по умолчанию np.nan

Значение для использования в качестве пропущенных значений. По умолчанию NaN, но может быть любым «совместимым» значением.

метод{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, по умолчанию None

Метод для заполнения пропусков в переиндексированных Series:

  • pad / ffill: распространяет последнее допустимое наблюдение вперед до следующего допустимого.

  • обратное заполнение / bfill: использовать СЛЕДУЮЩЕЕ допустимое наблюдение для заполнения пропуска.

Устарело с версии 2.1.

limitint, по умолчанию None

Если указан метод, это максимальное количество последовательных значений NaN для заполнения вперед/назад. Другими словами, если есть пробел с более чем этим количеством последовательных NaN, он будет заполнен только частично. Если метод не указан, это максимальное количество записей вдоль всей оси, где NaN будут заполнены. Должно быть больше 0, если не None.

Устарело с версии 2.1.

fill_axis{0 или 'index'} для Series, {0 или 'index', 1 или 'columns'} для DataFrame, по умолчанию 0

Заполнение оси, метод и лимит.

Устарело с версии 2.1.

broadcast_axis{0 или ‘index’} для Series, {0 или ‘index’, 1 или ‘columns’} для DataFrame, по умолчанию None

Транслировать значения вдоль этой оси, если выравниваются два объекта разных размерностей.

Устарело с версии 2.1.

Возвращает:
кортеж из (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